1.1.0 • Published 1 year ago

p-saga v1.1.0

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

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[]>;
}
1.1.0

1 year ago

1.0.14

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago