在我们实际业务开发过程中,我们可能会遇到一些调用第三方接口 比如图片解析,文字提取接口,但是这些接口都有并发要求,如果一个一个的去跑,我们完成任务的进度会比较慢,当然也可以考虑多线程的方式。此处不过多进行描述。对此我们可以使用promise-limit-time 控制promise.all的并发数量,以及间隔时间。
const { PromiseLimitTime } = require("promise-limit-time");
function log(val) {
return new Promise((resolve, reject) => {
setTimeout(() => {
// console.log(val);
resolve(val);
}, 1000);
});
}
const queueArr = [
{
attr: {
index: 1,
}, // Enter reference
async callback(attr) {
return log(attr);
},
},
{
attr: {
index: 2,
}, // Enter reference
async callback(attr) {
return log(attr);
},
},
{
attr: {
index: 3,
}, // Enter reference
async callback(attr) {
return log(attr);
},
},
];
async function use() {
// promiseLimitTime.prototype
const queueTask = PromiseLimitTime.getInstance().init(queueArr, 2);
const res = await queueTask.start(1000, (val) => {
console.log(val);
});
}
use();