javascript - (节点:2256)UnhandledPromiseRejectionWarning:未处理的承诺拒绝
问题描述
我想制作一个whatapp bot智能nodejs。我想添加一个论点。我的代码是这样的:
case 'brainly':
const args = process.argv
brainly(args).then(res => {
for(var i=0; i<res.length; i++){
var jawab = res[i].jawaban
client.sendText(from, jawab[0].text)
}
})
break
但是,当我运行它时,它会显示如下错误:
(节点:7960) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。
如何解决这个问题?请帮我。
解决方案
这意味着在异步上下文中的某个地方,很可能在调用创建的承诺内部,brainly(args)
发生了错误,并且没有被捕获和处理。
要开始使用异步 Javascript,我建议查找一些关于Javascript Promises 和 Async Functions(隐式生成 Promise,并允许使用await
语法)的文章。
没有真正简单的方法可以解释。Javascript 是一种单线程语言,但它通过使用回调、promise 和 async/await 语法(它们都源自回调)提供了很好的并发性。任何不会立即发生的事情,例如网络/磁盘操作,都是异步的,必须以适当的方式处理。这可能会让新手感到困惑,因为它破坏了线性异步执行流程。
Promise 是可以创建的对象,这些对象将在未来解决或拒绝。通过调用.then
Promise,你给了它一个回调函数,当它最终到达时,将使用解析的值调用它。您还应该.catch(err => { ... })
在末尾添加一个处理程序来处理错误,这可能由于您传递的参数而由于某种原因而被抛出。
推荐阅读
- javascript - 如何将标签放置在拆分包装气泡图上的系列旁边?
- rename - 在 ClickHouse 中重命名表时究竟会发生什么?
- curl - 如何使用curl导出excel
- discord.js - Discord.js:使用昵称而不是用户名
- office-js - 进一步研究“在循环中避免 context.sync”
- swiftui - SwiftUI 如何调整不同的屏幕尺寸(高度)
- php - PHP 发送 wp_mail 的问题
- reactjs - 是否有像 highstock 这样的组件用于反应原生?
- javascript - 如何在 JavaScript 中验证多部分表单数据的内容长度?
- angular - Jasmine Angular 9 测试失败,因为 injectableDefOrInjectorDefFactory 的堆栈跟踪“无法访问”