forEachAsync
对数组的每个元素执行异步函数。
typescript
await forEachAsync(array, callback);参考
forEachAsync(array, callback, options?)
当需要对数组的每个元素执行具有副作用的异步操作时,使用 forEachAsync。与常规的 forEach 不同,它返回一个在所有异步操作完成时解析的 Promise。
typescript
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 选项允许您限制并发执行以控制服务器或数据库的负载。它适用于不返回值的操作,如日志记录、文件上传或数据库更新。
typescript
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。

