js 在map中执行异步操作并串行
在 JavaScript 中,可以使用 map 方法结合 async/await 实现在 map 中执行异步操作并串行执行的功能。
下面是一个示例代码:
const arr = [1, 2, 3, 4, 5];
async function asyncOperation(item) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(item * 2);
}, Math.random() * 1000);
});
}
async function run() {
const results = [];
for (const item of arr) {
const result = await asyncOperation(item);
results.push(result);
}
console.log(results);
}
run();
在上面的代码中,asyncOperation 函数模拟了一个异步操作,通过返回一个 Promise 对象来表示异步结果。run 函数使用 for...of 循环遍历数组中的每个元素,并使用 await 来等待异步操作的结果。在每次循环中,只有前一个异步操作完成后,才会进行下一个异步操作,从而实现了串行执行的效果。
最后,我们可以看到控制台输出了 [2, 4, 6, 8, 10],表示每个元素都被乘以了 2。
请注意,上述代码中的 for...of 循环是按照数组的顺序依次执行异步操作的。如果需要并行执行异步操作,可以将 for...of 循环替换为 Promise.all 方法
原文地址: http://www.cveoy.top/t/topic/hCZy 著作权归作者所有。请勿转载和采集!