npm.io
5.0.0 • Published 3 years ago

batch-perform-promise

Licence
MIT
Version
5.0.0
Deps
1
Size
85 kB
Vulns
0
Weekly
0

batch-perform-promise

5.0版本使用father打包+semaphore实现

批量执行promise的方法,能够自定义“并行”发出的promise的个数

并行: promise发出等待时,为并行等待,由于js单线程,发出多个promise时是同步执行的,等待为并行,整体上有一种并行执行promise的感觉

快速启动

并行发出任务

import { batchPerformPromise } from 'batch-perform-promise';

// 准备任务以及处理函数
const payloads = ['p1', 'p2', 'p3'];
const handler = async (value: string) => Promise.resolve(value)

// await方式异步调用
const tasks = await batchPerformPromise<string>(payloads, handler);

// 查看调用结果 task
tasks[0] === {
  done: true,
  error: null,
  payload: 'p1',
  success: true,
}
并行执行时间
import { batchPerformPromise } from 'batch-perform-promise';

// 准备任务以及处理函数
const payloads = ['p1', 'p2', 'p3', 'p4', 'p5'];
// 处理函数,每2000ms执行完成一个promise
const handler = (payload: string) => new Promise((resolve) => {
  const timer = setTimeout(() => {
    clearTimeout(timer);
    resolve(payload);
  }, 2000);
});

// await方式异步调用
await batchPerformPromise<string>(payloads, handler);

// 一共执行时间6s
// [p1, p2] 2s
// [p3, p4] 2s
// [p5,   ] 2s
//  共计6s

更多使用方式参考test文件