Javascript中的异步方法队列

时间:2010-10-02 07:35:58

标签: javascript asynchronous queue

我正在尝试在Javascript中实现异步方法队列,如this blog post

中所示

这是我到目前为止所拥有的:

function Queue() {
  this._methods = [];
  this._response = null;
  this._flushed = false;
}

(function(Q){

  Q.add = function (fn) {
    if (this._flushed) fn(this._response);
    else this._methods.push(fn);
  }

  Q.flush = function (response) {
    if (this._flushed) return;
    this._response = response;
    while (this._methods[0]) {
      this._methods.shift()(response);
    }
    this._flushed = true;
  }

})(Queue.prototype);

我似乎无法像宣传的那样让它工作,尽管代码对我来说是正确的。当我调用flush函数时,我在行this._methods is undefined上获得while (this._methods[0]) {

1 个答案:

答案 0 :(得分:3)

你是如何使用它的?如果你在做:

var q = new Queue();
q.flush("foo");

...你不应该得到那个错误,我不是:http://jsbin.com/iduji3