我正在学习 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);
})
});
但是,我需要执行两次订阅的事实让我想到我可能在这里做错了什么。我不确定我的方向是否正确?
我想要的是每 5 秒获取一次的 promise 流。
这是我的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 的示例。
您还可以咨询:
关于javascript - 如何在 RxJs 中将间隔流与 Promise 流结合起来并获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36487742/