【发布时间】:2019-07-27 19:14:01
【问题描述】:
我正在尝试从内部回调将响应发送回chatbot emulator。
async getUserDetails(step){
console.log("inside get userdetaiuls modeiule")
this.userDBObject.password = step.result;
this.userDBMethod ( async function(response){
console.log("inside callback return");
console.log(response);
await step.context.sendActivity(response); // not able to do this step
return step.endDialog();
});
}
async userDBMethod(callback){
request.post('#',
{form:{key: 'hi'}}, function (error, response, body) {
callback("done");
});
}
我得到的错误是:
(节点:17424)UnhandledPromiseRejectionWarning:TypeError:不能 在已撤销的代理上执行“获取” 在 D:\LCI\Usecases\statementBalance\lionsbot-src\bot.js:384:32 在 Request._callback (D:\LCI\Usecases\statementBalance\lionsbot-src\bot.js:410:17) 在 Request.self.callback (D:\LCI\Usecases\statementBalance\lionsbot-src\node_modules\request\request.js:185:22) 在 Request.emit (events.js:182:13) 在 Request.EventEmitter.emit (domain.js:442:20) 在请求。 (D:\LCI\Usecases\statementBalance\lionsbot-src\node_modules\request\request.js:1161:10) 在 Request.emit (events.js:182:13) 在 Request.EventEmitter.emit (domain.js:442:20) 在传入消息。 (D:\LCI\Usecases\statementBalance\lionsbot-src\node_modules\request\request.js:1083:12) 在 Object.onceWrapper (events.js:273:13) (node:17424) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这 错误源于在异步函数内部抛出 没有 catch 块,或拒绝未处理的承诺 使用 .catch()。 (拒绝 ID:1)(节点:17424)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。在 未来,未处理的承诺拒绝将终止 具有非零退出代码的 Node.js 进程。
那么我如何在回调中使用 await 将响应发送回用户。 谢谢!
【问题讨论】:
-
使用
try/catch捕获Promise 中抛出的错误? -
但现在重要的任务是发回用户响应。这是在等待 step.context.sendActivity(response);
标签: javascript node.js botframework chatbot