docs/zh_hans/reference/array/forEachAsync.md
对数组的每个元素执行异步函数。
await forEachAsync(array, callback);
forEachAsync(array, callback, options?)当需要对数组的每个元素执行具有副作用的异步操作时,使用 forEachAsync。与常规的 forEach 不同,它返回一个在所有异步操作完成时解析的 Promise。
import { forEachAsync } from 'es-toolkit/array';
// 更新所有用户信息。
const users = [{ id: 1 }, { id: 2 }, { id: 3 }];
await forEachAsync(users, async user => {
await updateUser(user.id);
});
// 所有用户更新已完成。
// 限制并发数。
const items = [1, 2, 3, 4, 5];
await forEachAsync(items, async item => await processItem(item), { concurrency: 2 });
// 最多同时处理 2 个项目。
concurrency 选项允许您限制并发执行以控制服务器或数据库的负载。它适用于不返回值的操作,如日志记录、文件上传或数据库更新。
import { forEachAsync } from 'es-toolkit/array';
// 顺序上传文件。
const files = ['file1.txt', 'file2.txt', 'file3.txt'];
await forEachAsync(files, async file => await uploadFile(file), { concurrency: 1 });
// 一次只上传一个文件。
array (readonly T[]):要迭代的数组。callback ((item: T, index: number, array: readonly T[]) => Promise<void>):要为每个元素执行的异步函数。options (ForEachAsyncOptions, 可选):控制并发的选项。
concurrency (number, 可选):最大并发操作数。如果未指定,所有操作将并发执行。(Promise<void>):一个在所有操作完成时解析的 Promise。