RxJS:立即开始的间隔

时间:2016-04-15 08:17:21

标签: angular rxjs

我正在制作一个简单的玩具angular2项目,每隔5秒就会击中一个网址。现在我拥有它以便轮询网址,当文档加载时它不会等待。但它看起来真的很笨重。对此有更好的解决方案吗?

Observable.interval(1000 * 5)
      .flatMap(() => this.http.get(url))
      .merge(this.http.get(url)) // Merges a stream that starts right away!!!
      .map((res:Response) => res.json());

2 个答案:

答案 0 :(得分:7)

我想你可以尝试这样的事情:

    Observable.interval(1000 * 5)
      .startWith(0)
      .flatMap(() => this.http.get(url))
      .map((res:Response) => res.json());

这将立即发出一个值,然后每5秒发出一次。

查看文档here.

答案 1 :(得分:6)

您可以使用timer代替

Observable.timer(0, 1000 * 5)
          .flatMap(() => this.http.get(url),
                   (_, res) => res.json);

timer在发出第一个事件之前会有一个初始延迟,然后每隔5秒发出一次interval