sequential
sequential通常用于顺序执行多个异步操作的场景。它接收一组返回Promise的函数functions,串行执行它们,函数接受PromiseSettledResult类型包裹的前一个函数的返回作为入参。
如果传入可选参数initialValue,它会被 fulfilled 状态的PromiseSettledResult类型包裹传入第一个函数,否则第一个函数将会接收undefined作为入参。
Added in v0.0.1
Usage
ts
import { sequential } from 'parsnip-kit'
const functions = [
async (arg?: PromiseSettledResult<number>) => {
if (arg?.status === 'fulfilled') {
return arg.value
} else {
throw new Error('test')
}
},
async (arg?: PromiseSettledResult<number>) => {
return arg?.status === 'fulfilled' ? arg.value + 1 : 0
},
async (arg?: PromiseSettledResult<number>) => {
return arg?.status === 'fulfilled' ? arg.value * 2 : 0
}
]
sequential(functions).then(res => { console.log(res) })
// [
// { status: 'rejected', reason: new Error('test') },
// { status: 'fulfilled', value: 0 },
// { status: 'fulfilled', value: 0 }
// ]
sequential(functions, 0).then(res => { console.log(res) })
// [
// { status: 'fulfilled', value: 1 },
// { status: 'fulfilled', value: 2 },
// { status: 'fulfilled', value: 4 }
// ]API
Type Parameter
| Arg | Type | Description |
|---|---|---|
T | | 返回Promise的value类型 |
Arguments
| Arg | Type | Optional | Default | Description |
|---|---|---|---|---|
functions | ((arg?: PromiseSettledResult<Awaited<T>>) => Promise<T>)[] | false | undefined | 返回Promise的函数数组 |
initialValue | Awaited<T> | true | undefined | 初始值 |
Returns
| Type |
|---|
Promise<PromiseSettledResult<Awaited<T>>[]> |