轮询时如何继续解决Q承诺

时间:2016-01-05 20:28:30

标签: javascript q polling

我尝试轮询端点并使用Q来解析请求。但是我知道你可以用Q来做到这一点,因为一旦承诺得到解决它已经完成了。

我可以使用Q和我的投票一起使用吗?

我的设置类似于:

class Poller {
  poll() {
    const deferred = Q.defer();

    const promise = $.ajax({ 
      //stuff 
    });

    promise.done((resp) => {
      // this resolves just once, how can I keep resolving
      // on future xhr calls?
      deferred.resolve(resp);
    });

    promise.always(() => {
      setTimeout(() => {
        this.poll.call(this);
      }, 5000)
    })

    return deferred.promise;
  }

}

const poller = new Poller();

poller.poll().then((resp) => {
  // keep trigging updates from polling
})

1 个答案:

答案 0 :(得分:3)

承诺的全部意义在于它只能被解决一次。您正在寻找的结构是事件