如何在 RxJs 中将间隔流与 Promise 流结合起来并获取值?

How to combine interval stream with Promise stream in RxJs and get the values?

我正在学习 RxJs,它非常棒。我正在尝试创建一个页面,其中 Ajax 调用是间隔的,因此数据将每 5 秒刷新一次。所以我想我会这样做。

var ajax = new Promise(function(resolve) {
  return resolve('test');
});

var source1 = Rx.Observable.interval(5000)
  .map(function(i) {
    return Rx.Observable.fromPromise(ajax);
  });

source1.subscribe(function(res) {
    res.subscribe(function(pro) {
    console.log(pro);
  })
});

但是,我需要做两个 subscribe 的事实让我觉得我可能在这里做错了什么。我不确定我的方向是否正确?

我想要的是每 5 秒获取一次的承诺流。

这是我的 jsfiddle

https://jsfiddle.net/noppanit/2y179dgg/

您需要使用 flatMap 运算符。看看 jsbin here.

var ajax = new Promise(function(resolve) {
  return resolve('test');
});

var source1 = Rx.Observable.interval(1000)
  .flatMap(function(i) {
    return Rx.Observable.fromPromise(ajax);
  });

source1.subscribe(function(res) {
    console.log(res);
});

SO 上有大量使用 flatMap 的示例。

您还可以咨询: