承诺队列处理乱序

时间:2017-08-26 06:27:13

标签: javascript promise queue

我正在尝试我认为是promise-queue

的基本用例
var Queue = require("promise-queue")
let queue = new Queue();

//add first item to queue
queue.add(() => {
console.log('start 1');
return new Promise((resolve, reject) => {
      setTimeout(() => {
          console.log('finished processing');
          resolve();
        },
        5000);
    });
});

//add second item to queue
queue.add(() => { console.log('start 2'); });

导致输出:

>start 1
>start 2
>finished processing

第二项在第一项完成之前开始。我错过了什么?

试试此代码示例runkit

1 个答案:

答案 0 :(得分:1)

如果你改变了

let queue = new Queue();

使用并发参数

let queue = new Queue(1);

然后您的代码按预期工作

也许promise-queue

中有一个> 1默认并发
  

查看the source code,默认为Infinity并发Promises