首页 > 解决方案 > (节点: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() 处理的承诺。

如何解决这个问题?请帮我。

标签: javascriptnode.js

解决方案


这意味着在异步上下文中的某个地方,很可能在调用创建的承诺内部,brainly(args)发生了错误,并且没有被捕获和处理。

要开始使用异步 Javascript,我建议查找一些关于Javascript Promises 和 Async Functions(隐式生成 Promise,并允许使用await语法)的文章。

没有真正简单的方法可以解释。Javascript 是一种单线程语言,但它通过使用回调、promise 和 async/await 语法(它们都源自回调)提供了很好的并发性。任何不会立即发生的事情,例如网络/磁盘操作,都是异步的,必须以适当的方式处理。这可能会让新手感到困惑,因为它破坏了线性异步执行流程。

Promise 是可以创建的对象,这些对象将在未来解决拒绝。通过调用.thenPromise,你给了它一个回调函数,当它最终到达时,将使用解析的值调用它。您还应该.catch(err => { ... })在末尾添加一个处理程序来处理错误,这可能由于您传递的参数而由于某种原因而被抛出。


推荐阅读