javascript - 如何在 RxJs 中将间隔流与 Promise 流结合起来并获取值?

标签 javascript rxjs

我正在学习 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

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 的示例。

您还可以咨询:

关于javascript - 如何在 RxJs 中将间隔流与 Promise 流结合起来并获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36487742/

相关文章:

php - html 表单提交时出现 JavaScript 错误

javascript - 存储在我的内存函数中传递的函数的参数

javascript - 不带缓冲的节流流

Angular 2 - 订阅 FormControl 的 valueChanges 是否需要取消订阅?

angular - 如何使用BehaviorSubject封装加载器服务逻辑

angular - 使用 WebSocket 可观察到的 RxJs

javascript - Express.js (MYSQL) 中的 DELETE 函数不删除行

javascript - 自动关闭带有要下载文件的弹出窗口

javascript - RXJS + Axios 错开网络请求

javascript - 使用 JavaScript 更改 SVG 图像的大小?