首页 > 解决方案 > 为什么bottleneck.js 中的maxConcurrent 设置不起作用?

问题描述

我正在使用瓶颈npm 包。我将限制器设置如下:

const limiter = new Bottleneck({
        maxConcurrent: 3,
        minTime: 100
});

最多同时运行 3 个任务。但是,我看到任何时候都不会有超过 1 个任务同时运行。

这是我的代码:

const Bottleneck = require('bottleneck');

const main = () => {
    console.log('starting main');
    const limiter = new Bottleneck({
        maxConcurrent: 3,
        minTime: 100
    });

    const worker = (text, limiterCb) => {
        Promise.resolve()
        .then(() => {
            console.log(`starting ${text}`);
            let res;
            for (let i = 0; i < 10000000000; i++) {
                res++
            }
            console.log(`ending ${text}`);
            limiterCb();
        });
    };

    const limiterCb = res => console.log('limiter finished');

    limiter.submit(worker, 'hello', limiterCb);
    limiter.submit(worker, 'hello', limiterCb);
    limiter.submit(worker, 'hello', limiterCb);
    limiter.submit(worker, 'hello', limiterCb);
}

main();
console.log('exiting')

我看到的是第一个任务开始并完成,然后是第二个等等。但是因为每个任务需要超过 100 毫秒才能完成,所以我预计会有多个任务同时运行。

标签: javascriptnode.jsrate-limiting

解决方案


推荐阅读