我如何 - 长轮询和调度程序?

How do I - Long polling and Schedulers?

我正在尝试安排一个长轮询机制。我想知道我是否可以为此利用调度程序。

这是我目前的想法。

  1. 通过计时器安排,但只有在上一次迭代已经完成时才将下一次迭代加入队列。

  2. 在上一次迭代完成时将下一次迭代排队。

我一直在查看现有的调度程序,但我不太确定该选择哪个以及要重载什么。

最后但并非最不重要的一点 - 因为我是 Rx 世界的新手 - 使用 Scheduler 相对于 "roll your own" 方法有什么优势。

像这样:

Observable.interval(500)
.exhaustMap(() => this.load()) //previously flatMapFirst, creates new observable only if previous has ended
.map(r => resource.json)
.distinctUntilChanged() //optional tracking changes
.startWith(0);