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

toy*_*toy 2 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);
  })
});
Run Code Online (Sandbox Code Playgroud)

然而,事实上我需要做两件事subscribe让我觉得我可能在这里做错了.我不确定我是否正朝着正确的方向前进?

我想要的是每5秒钟取一次的承诺流.

这是我的jsfiddle

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

use*_*222 7

你需要使用flatMap运营商.看看这里jsbin.

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);
});
Run Code Online (Sandbox Code Playgroud)

在SO上有大量使用flatMap的例子.

你也可以咨询: