【发布时间】:2017-11-14 16:39:47
【问题描述】:
我认为我对它的理解可能会受到我使用 .NET 的async/await 的经验的影响,所以我想要一些代码示例:
我正在尝试让快速控制器在返回响应之前等待 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',
},
]);
};
};
此代码不起作用,浏览器不断加载和加载,从不显示任何内容。
我基于this SO answer 构建的getUser 函数和控制器方法,基于我对它如何工作的(错误的)理解,所以我想要一些澄清和更正:
1.我什么时候应该使用await?
据我了解,您应该在 async 函数调用之前使用 await。它是否正确?另外,为什么我可以在返回 promise 的非异步函数之前调用 await?
2。我应该什么时候使用async?
据我了解,您将函数标记为async,以便可以使用await 关键字调用它。它是否正确?另外,[为什么]我必须将我的 await getUsers(5000) 调用包装在匿名异步函数中?
【问题讨论】:
-
不要将东西包装在异步匿名函数中,这在您的代码中也永远不会执行。而是使索引函数异步并删除函数包装并返回 res.json
标签: javascript node.js asynchronous async-await