如何在 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
您需要使用 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 的示例。
您还可以咨询:
我正在学习 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
您需要使用 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 的示例。
您还可以咨询: