如何在RxJs中将区间流与Promise流组合并获取值?

时间:2016-04-07 21:41:53

标签: javascript rxjs

我正在学习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/

1 个答案:

答案 0 :(得分:6)

您需要使用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的例子。

您也可以咨询: