我认为我的理解可能受到我对.NET的async/await
经验的影响,因此我想要一些代码示例:
我正在尝试让一个Express控制器等待5秒钟才返回响应:
const getUsers = async (ms) => {
var wait = ms => new Promise(resolve => setTimeout(resolve, ms));
await wait(ms);
};
export const index = (req, res) => {
async () => {
await getUsers(5000);
res.json([
{
id: 1,
name: 'John Doe',
},
{ id: 2,
name: 'Jane Doe',
},
]);
};
};
这段代码不起作用,浏览器一直在加载,但是什么都没有显示。
getUser
函数是我基于这个SO答案建立的,控制器方法是基于我的(错误)理解工作的,所以我想要一些澄清和更正:
1. 我应该在何时使用await
?
据我理解,在async
函数调用之前应该使用await
。这正确吗?此外,为什么可以在返回Promise的非异步函数之前调用await?
2. 何时应该使用async
?
据我理解,将一个函数标记为async
,以便可以使用await
关键字调用它。这正确吗?此外,为什么必须将await getUsers(5000)
调用包装在匿名async函数中?