parallel
并行运行多个异步函数
基本用法
类似 _.map,但专门为并行运行异步回调函数而构建。第一个参数是一次允许运行的函数数量限制。返回结果数组。
import { parallel } from 'radash'
const userIds = [1, 2, 3, 4, 5, 6, 7, 8, 9]
// 将同时运行3个查找用户的异步函数
// 当其中一个完成时,开始另一个请求
const users = await parallel(3, userIds, async (userId) => {
return await api.users.find(userId)
})
错误处理
当所有工作完成时,parallel将检查错误。如果发生任何错误,它们将全部在一个 AggregateError 中抛出,该错误具有一个 errors 属性,包含所有被抛出的错误。
import { parallel, try as tryit } from 'radash'
const userIds = [1, 2, 3]
const [err, users] = await tryit(parallel)(3, userIds, async (userId) => {
throw new Error(`No, I don\'t want to find user ${userId}`)
})
console.log(err) // => AggregateError
console.log(err.errors) // => [Error, Error, Error]
console.log(err.errors[1].message) // => No, I don't want to find user 2
相关内容
- alphabetical 按属性对对象数组进行字母顺序排序 给定一个对象数组和一个用于确定排序属性的回调函数,返回一个按字母顺序排序的新数组
- boil 将列表项缩减为一个项 给定一个项数组,返回在比较条件中获胜的最终项
- cluster 将列表拆分为指定大小的多个列表 给定一个项数组和所需的集群大小(`n`),返回一个数组的数组
- counting 创建一个包含项目出现次数的对象 给定一个对象数组和一个用于确定每个对象应如何标识的标识回调函数
- diff 创建两个数组之间的差异数组 给定两个数组,返回第一个数组中存在但第二个数组中不存在的所有项的数组
- first 获取列表中的第一个项 给定一个项数组,返回第一个项,如果不存在任何项则返回默认值