p-saga
v1.1.0
Published
expand promise static methods
Downloads
4
Maintainers
Readme
p-saga
基于 Promise 封装的常用处理异步任务的方法。
方法
series
逐个执行任务
map
异步任务按顺序逐个执行,全部完成后返回全部结果。
reduce
异步任务逐个执行,每个任务能查到已完成的任务,全部完成后返回全部结果。
batch
按固定任务数量并发,逐批次完成全部任务,全部完成后返回全部结果。
outburst
按照指定数量同时启动第一批,每个任务完成后启动一个剩余任务,直至全部完成返回全部结果。
使用
import { series, map, reduce, batch, outburst } from 'p-saga';
map(
Array.from({ length: 20 }).map(
() => (page: number) =>
fetch(new Request(`/mock/list?page=${page}&size=20`), {
method: 'GET',
}),
),
);
全局使用
// 入口文件
import 'p-saga/bind';
// typings.d.ts
declare interface PromiseConstructor {
series: <T = any>(tasks: ((index: number, copiedTasks: any[]) => T | Promise<T>)[]): Promise<void>;
map: <T = any>(tasks: ((index: number, copiedTasks: any[]) => T | Promise<T>)[]): Promise<T[]>;
reduce: <T>(tasks: ((previousValue: T[], index: number, copiedTasks: any[]) => Promise<T[]> | T[])[], initialValue?: T[]): Promise<T[]>;
batch: <T = any>(count: number, tasks: ((index: number, batchIndex: number) => T | Promise<T>)[]): Promise<T[]>;
outburst: <T = any>(count: number, tasks: Array<(index: number) => T | Promise<T>>): Promise<T[]>;
}