异步控制流程 遍历篇each
在JavaScript中,使用async/await
可以在Array.prototype.forEach
循环中等待异步操作完成。但是,由于forEach
不能原生地等待异步操作,你可以使用for...of
循环来实现这一功能。
以下是一个使用for...of
循环和async/await
的示例代码:
const asyncForEach = async (array, callback) => {
for (const item of array) {
await callback(item, array.indexOf(item), array);
}
};
const asyncOperation = async (item) => {
// 模拟异步操作,例如网络请求
return new Promise((resolve) => setTimeout(() => resolve(item), 1000));
};
const array = [1, 2, 3, 4, 5];
const logNumbers = async () => {
await asyncForEach(array, async (item) => {
const result = await asyncOperation(item);
console.log(result);
});
};
logNumbers();
在这个例子中,asyncForEach
函数接收一个数组和一个异步函数callback
。asyncForEach
是一个异步函数,它使用for...of
循环来遍历数组,并且在每次迭代中等待callback
完成。asyncOperation
模拟了一个异步操作,例如网络请求,它返回一个Promise。当调用logNumbers
函数时,它将遍历数组并输出每个数字后的结果。
评论已关闭