@dhlx/async-pool
TypeScript icon, indicating that this package has built-in type declarations

0.0.7 • Public • Published

Async Pool

一个轻量级的 JavaScript 异步任务并发控制工具。它允许你限制同时运行的异步任务数量,确保在同一时间只执行指定数量的任务。

安装

通过 npm 安装:

npm install async-pool

使用方法

asyncPool 函数可以让你管理异步操作的并发性。你可以限制并行执行的任务数量,并以受控方式处理它们。

示例

以下示例展示了如何使用 asyncPool 限制并发的异步任务。

import asyncPool from 'async-pool';

// 创建一个异步任务
const mockAsyncTask = (id, delay) => {
  return () =>
    new Promise((resolve) => {
      setTimeout(() => {
        resolve(`任务 ${id} 完成`);
      }, delay);
    });
};

// 创建一个并发限制为 3 的任务池
const pool = asyncPool({ limit: 3 });

const tasks = [
  pool(() => mockAsyncTask(1, 500)()),
  pool(() => mockAsyncTask(2, 1000)()),
  pool(() => mockAsyncTask(3, 300)()),
  pool(() => mockAsyncTask(4, 700)()),
  pool(() => mockAsyncTask(5, 200)()),
];

// 开始所有任务
Promise.all(tasks).then((results) => {
  console.log('所有任务已完成: ', results);
});

在上述示例中:

我们创建了几个不同延迟时间的异步任务。 asyncPool 用于限制同时运行的任务数量为 3。 任务分批执行,确保在任何时刻最多只有 3 个任务在运行。

配置

你可以通过传递可选的配置对象来自定义 asyncPool。

const pool = asyncPool({ limit: 5 });

limit:(可选) 最大并发任务数量。默认为 6。

API

asyncPool(config?)
  config:
    limit: (可选) 同时执行的最大任务数,默认为 6。

返回值: 一个函数,该函数接受一个异步任务,并将其加入队列进行执行。

示例:

const pool = asyncPool({ limit: 3 });
pool(() => someAsyncFunction());

测试

单元测试使用 ava 编写。你可以使用以下命令运行测试:

npm test

提供了示例测试用例,以验证并发控制和错误处理功能。

许可证

该项目基于 MIT 许可证开源。

Readme

Keywords

Package Sidebar

Install

npm i @dhlx/async-pool

Weekly Downloads

3

Version

0.0.7

License

MIT

Unpacked Size

8.05 kB

Total Files

10

Last publish

Collaborators

  • lidenghui~