我正在学习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
答案 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的例子。
您也可以咨询: