简单使用 p-limit 库用来限制并发数
开发时遇到需要提前缓存图片的需求,图片几百张,需要提前下载,防止同时请求量过大,需控制并发数,使用 p-limit
库完成。
安装
npm install p-limit
// 5.0版本 在 vite + vue 使用时打包报错,切换为4.0版本没报错
基础使用 git地址
// 官方使用例子
import pLimit from 'p-limit';
// 定义并发数量
const limit = pLimit(1);
// limit接受一个异步任务
const input = [
limit(() => fetchSomething('foo')),
limit(() => fetchSomething('bar')),
limit(() => doSomething())
];
// 使用Promise.all来接收异步任务列表
const result = await Promise.all(input);
实际使用
import pLimit from 'p-limit';
let limit = pLimit(4);
const onePromise = obj => {
return new Promise(async (resolve, reject) => {
let data = await loadImg('xxx');
resolve(data);
});
};
const input = list.map(val => limit(() => onePromise(val)));
let result = await Promise.all(input);
// 停止
limit.clearQueue();