javascript承诺async和await问题



第三条控制台语句在第二条语句之前执行当我请求API获得响应的其他代码开始执行,我想防止这种我是新的javascript。,我尝试async-await,但我做错了…!

app.post('/api', async (req, res) => {  
console.log(req.body.msg+" -> "+req.body.user+" -> one");    
options.qs.message=req.body.msg;
options.qs.uid=req.body.user;    
let botRespone= await request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body+" -> two");
botRespone=body;
});    
console.log(botRespone.chatbot+" -> three");    
}); 

这是因为你提供了回调函数,它不返回promise,如果你想等待它,它需要工作。因此,删除回调函数应该可以解决这个问题。另外,请确保您使用的是request-promise库,因为默认的request库不返回promise。

app.post('/api', async (req, res) => {  
console.log(req.body.msg+" -> "+req.body.user+" -> one");    
options.qs.message=req.body.msg;
options.qs.uid=req.body.user;    
let botRespone= await request(options);    
console.log(botRespone.chatbot+" -> three");    
}); 

最新更新