JavaScript 中使用 Map 和 Async/Await 实现异步操作串行执行
在 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' 方法。
原文地址: https://www.cveoy.top/t/topic/o5I7 著作权归作者所有。请勿转载和采集!