0

我需要使用队列来序列化我的异步请求。环顾四周,我在这里找到了 Mike Bostock 的一个小型图书馆。但是我有点困惑,因为 tp 如何将它与 promise 对象一起使用。

所以,我有大量来自用户界面的请求。

function addTask(d){
   AsyncOper(d)
      .then(function () {
             refresh()
      });
}

AsyncOper 返回一个 promise 对象(角度 js 实现 - $q)。

我将 aq 定义为

var q = queue(1);

我该如何转addTaskq

我的第一次尝试如下:

    function addTask(d){
       q.defer(request, d)
       q.awaitAll(function(error, results) { console.log("all done!"); });
    }
    function request(d, cb) {
        AsyncOper(d)
            .then(function () {
                refresh();
                cb(null, "finished "+ d);
            })
    }

但它并没有真正序列化操作,因为我看到它试图运行多个请求。是否可以以这种方式结合承诺和队列,或者有更好的方法吗?

谢谢你。

4

1 回答 1

3

https://github.com/mbostock/queue说,关于 await 和 awaitAll:

This method should only be called once, after any tasks have been
deferred. If the await callback is set multiple times, or set before 
a task is deferred, the behavior of the queue is undefined.

目前,您每次推迟任务后都会调用 awaitAll,这无疑是一件很麻烦的事情。有没有一个地方可以在所有东西都排队之后等待所有的东西?如果没有,这个特别的库可能不适合你。

于 2013-05-04T03:27:44.003 回答