我想我对它的理解可能是由我与经验所影响.NET的async/await
,所以我想一些代码示例:了解异步/等待上的NodeJS
我试图做一个快速控制器在返回响应之前等待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
功能我基于this SO answer建成,并在控制器方法的基础上,它是如何工作我的(错误的)理解,所以我想澄清和纠正:
1时,我应该使用await
?
就我的理解,你应该在async
函数调用之前使用await
。它是否正确?另外,为什么我可以在返回promise的非异步函数之前调用await?
2.什么时候应该使用async
?
就我的理解,您将某个功能标记为async
,因此可以使用await
关键字调用该功能。它是否正确?另外,[为什么]我必须将我的await getUsers(5000)
调用包装在匿名异步函数中?
不要将东西包装在异步匿名函数中,而您的代码中也不会执行异步匿名函数。相反,使索引函数异步并删除函数包装并返回res.json –