Асинхронный метод очереди в Javascript - PullRequest
2 голосов
/ 02 октября 2010

Я пытаюсь реализовать очередь асинхронных методов в Javascript, как показано в этом сообщении в блоге

Вот что у меня есть:

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);

Я могуКажется, он не работает так, как рекламируется, хотя код выглядит для меня правильным.Когда я вызываю функцию сброса, я получаю this._methods is undefined в строке while (this._methods[0]) {.

1 Ответ

3 голосов
/ 02 октября 2010

Как ты это используешь? Если вы делаете:

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

... вы не должны получать эту ошибку, а я нет: http://jsbin.com/iduji3

...