我有一个承诺队列(代表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);
});
});
}