Node.JS多线程PromisePool之promise-pool库实现
const PromisePool = require("@supercharge/promise-pool");
// 假设有一个异步任务函数
async function asyncTask(taskId) {
// 这里可以是任何异步操作,例如数据库查询、网络请求等
console.log(`执行任务 ${taskId}`);
await new Promise(resolve => setTimeout(resolve, 1000)); // 模拟耗时操作
return `结果 ${taskId}`;
}
// 使用promise-pool库来并行执行多个任务
async function runPool() {
const tasks = Array.from({ length: 20 }, (_, id) => asyncTask(id)); // 创建一个包含20个任务的数组
const pool = PromisePool.withConcurrency(tasks, 5); // 设置并发数为5
try {
const results = await pool.run(); // 执行并发处理
console.log(results); // 打印所有任务的结果
} catch (error) {
console.error('一个任务失败了:', error);
}
}
runPool();
这段代码演示了如何使用@supercharge/promise-pool
库来并行执行一组异步任务。我们创建了一个任务数组,每个任务是异步函数,并发数设置为5,然后使用PromisePool.withConcurrency
来执行这些任务,并等待所有任务完成。如果有任何任务失败,将捕获错误并打印。
评论已关闭