我想使whatapp机器人聪明地使用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()处理的诺言而引起的。
该如何解决?请帮助我。
答案 0 :(得分:2)
这意味着在异步上下文中的某个位置(很可能在调用brainly(args)
所创建的承诺中)发生了错误,并且没有捕获并处理该错误。
要开始使用异步Javascript,我建议您找到有关Javascript Promises和Async Functions(隐式生成Promise,并允许使用await
语法)的articles。
没有真正简单的方法可以解释。 Javascript是一种单线程语言,但是通过使用回调,promise和async / await语法(它们都源自回调),它提供了很大的并发性。诸如网络/磁盘操作之类的并非瞬间发生的事物都是异步,必须以适当的方式进行处理。对于新手来说,这可能会造成混乱,因为它破坏了线性的异步执行流程。
Promise是可以创建的对象,将来会解决或拒绝。通过在promise上调用.then
,可以为它提供一个回调函数,该函数将在最终到达时使用已解析的值进行调用。您还应该在末尾添加.catch(err => { ... })
处理程序以处理错误,这可能是由于传递参数而由于某种原因而抛出的。