// 使用 async/await 和 Promise.all 来处理异步操作
const asyncForeach = async (array, callback) => {
// 创建一个 Promise 数组,每个元素是通过调用 callback 函数返回的 Promise
const promises = array.map(callback);
// 等待所有 Promise 完成
await Promise.all(promises);
};
// 示例代码:假设我们有一个异步函数 simulateAsyncOperation
const simulateAsyncOperation = (item) => {
return new Promise((resolve) => {
setTimeout(() => {
console.log(`Processed ${item}`);
resolve();
}, 1000); // 模拟异步操作,延迟1秒
});
};
// 使用 asyncForeach 处理数组中的异步操作
(async () => {
const items = [1, 2, 3, 4, 5];
await asyncForeach(items, (item) => simulateAsyncOperation(item));
console.log('All items processed');
})();
asyncForeach 函数:这个函数接受一个数组和一个回调函数作为参数。它使用 map 方法遍历数组,并将每次调用回调函数的结果(即 Promise)存储在一个新的数组中。然后使用 Promise.all 等待所有 Promise 完成。
simulateAsyncOperation 函数:这是一个模拟的异步操作函数,它返回一个 Promise,在 1 秒后完成并打印出处理的项。
使用 asyncForeach:在最后的立即执行函数中,我们定义了一个包含数字的数组 items,并调用 asyncForeach 来处理这些项。当所有项都处理完毕后,会打印 "All items processed"。
这种方式可以确保所有的异步操作并行执行,并且在所有操作完成后继续执行后续代码。
上一篇:js array最后一个元素
下一篇:js for each
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站