如何循环承诺队列(序列化异步消息)



我有一个承诺队列(代表msgs),我需要按顺序处理。我正在使用 angularJS。

为了示例,假设我有connect()返回连接的承诺,然后msgQueue这是一个JavaScript的承诺数组,每个承诺代表一个味精。

我会从这样做开始:

connect().then(function(){
    return msgQueue.dequeue();
});
// Async Loop on all msgs... How?

我有点像推迟/承诺新手,所以请耐心等待。

谢谢!

function serializeAsynch(queue,operate) {
  var msg = queue.dequeue();
  if (msg) msg.then(function(data) { operate(data); serializeAsynch(queue); });
}
connect().then(function() { serializeAsynch(msgQueue,process); });

我认为这将奏效。 我们正在等待connect解决,然后通过msgQueue. 我们获取queue中的第一条消息,并设置其解析处理程序来处理数据,然后在队列上递归。 当队列中没有剩余内容时,递归将转储出来。

这样的事情会起作用。假设msgQueue.dequeue()返回一个承诺。

function doWork(work) {
    work().then(function(data) {
       //process data
       msgQueue.dequeue().then(function(work) {
           doWork(work);
       });
    });
}

最新更新