第三条控制台语句在第二条语句之前执行当我请求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");
});