我想我對它的理解可能是由我與經驗所影響.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 –