1. 简介
promise-wip-throttler
是一个用于控制 Promise 并发数量的 npm 包。它可以限制 Promise 的并发数量,防止并发过高造成资源浪费或程序崩溃的问题。
该包具有以下特点:
- 支持自定义最大并发数量;
- 可以设置队列等待时间,让任务出现等待时间过长时直接放弃执行;
- 具有简单的 API,易于使用。
2. 安装
npm install promise-wip-throttler
3. 使用
3.1 引入
const { Throttler } = require('promise-wip-throttler')
3.2 创建实例
const throttler = new Throttler({ maxConcurrency: 5 // 最大并发数量 })
3.3 执行任务
throttler.addTask( () => { // 这里是你要执行的异步任务 return new Promise(resolve => setTimeout(resolve, 1000)) } )
3.4 组合任务
Promise.all([ throttler.addTask(() => fetch('http://example.com')), throttler.addTask(() => fetch('http://example.com')), throttler.addTask(() => fetch('http://example.com')), ]).then(([res1, res2, res3]) => { // 你的代码逻辑 })
3.5 队列等待时间
const throttler = new Throttler({ maxConcurrency: 5, // 最大并发数量 queueTimeout: 500 // 等待队列时间设置为 500ms,超过则忽略任务。 })
4. 示例代码
-- -------------------- ---- ------- ----- - --------- - - -------------------------------- ----- --------- - --- ----------- --------------- -- ------------- --- -- ----- ----- - -- --- ---- - - -- - - --- ---- - ------------- -- - ------ --- --------------- -- ------------- -- - ----------------- ---- -- ------ --------- -- ------------- - ------ -- - -------------------------- -- ------------------------- -------- -- - ---------------- ----- --- ------ -- ---------- -- - ------------------ --
以上示例代码会同时启动 10 个任务,但是由于 maxConcurrency
配置的是 5,因此只有 5 个任务会在同一时间内执行,并且每个任务执行的时间不定,所以最终的执行顺序也不定。但你可以肯定的是,所有任务都会在有限的时间内执行完毕。如果你将 maxConcurrency
设置成过高的值,那么同时会并发过高,可能会导致程序崩溃或者接口调用频率限制。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005672581e8991b448e3a0b