Javascript 为什么要将异步函数与wait一起使用,而不仅仅是函数?
请原谅,我正在尝试使用Node学习Javascript,但我无法理解为什么这段代码需要一个Javascript 为什么要将异步函数与wait一起使用,而不仅仅是函数?,javascript,node.js,asynchronous,async-await,Javascript,Node.js,Asynchronous,Async Await,请原谅,我正在尝试使用Node学习Javascript,但我无法理解为什么这段代码需要一个异步函数。我认为异步函数应该被“触发”,然后忘记在后台执行某些操作,并在以后返回结果 因此,在下面的代码(Express router)中,在回调函数中使用async/await而不仅仅将其作为普通函数(删除async和await代码)的目的是什么 对于注释:“await运算符用于等待承诺。它只能在async函数中使用。”(async/await只是Promise的语法糖。wait之后的任何内容都将位于Pr
异步函数
。我认为异步函数应该被“触发”,然后忘记在后台执行某些操作,并在以后返回结果
因此,在下面的代码(Express router)中,在回调函数中使用async/await而不仅仅将其作为普通函数(删除async
和await
代码)的目的是什么
对于注释:“
await
运算符用于等待承诺。它只能在async
函数中使用。”(async
/await
只是Promise
的语法糖。wait
之后的任何内容都将位于Promise
的.then()
处理程序中。如果没有try
/catch
它就像api.getHomepageFeed()。然后(feed=>res.json(feed))
那么如果我做了router.get('/homepage',function(req,res){let HomepageFeed=api.getHomepageFeed()res.json(HomepageFeed)})
它可能不返回任何内容,因为api.HomepageFeed()
在res.json(HomepageFeed)
发回时仍在获取数据?这是正确的理解吗?@volumeone是的。显然,您的api.HomepageFeed()
函数返回一个承诺,您希望等待该承诺并将其结果作为响应发送。
router.get('/homepage', async function (req, res) { // why async here?
let HomepageFeed;
try {
HomepageFeed = await api.getHomepageFeed(); // if you're await-ing here?
} catch (error) {
if (error.code === 404) {
return res.status(404).send('404 | Page Not Found');
}
return res.status(500).send('500 | Internal Server Error');
}
res.json(HomepageFeed);
});