我正在学习RxJ,这很酷。我正在尝试创建一个页面,其中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
,这让我觉得我在这里可能做错了。我不确定我的方向是否正确?我想要的是每五秒钟获取一次的 promise 流。
这是我的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的示例。
您还可以咨询: