javascript - rxjs 可观察到的变化间隔

标签 javascript typescript rxjs

我有一个 Observable,它应该每 X 秒完成一个 Action 。 X 的值动态变化。我一直无法思考如何在运行时即时更改此间隔。据我所知,我认为 Observable 的一个重大突破是定义后就不能更改,因此尝试使用新的间隔值重新定义 Observalbe 似乎不是正确的方法。

我一直在尝试使用位于 https://www.learnrxjs.io/operators/transformation/switchmap.html 的代码

到目前为止,我认为 switchMap 至少在正确的轨道上。谁能提供一个例子或指出可能对我有帮助的资源?

至少,世界肯定需要更多的 RxJs 示例!

最佳答案

您可以使用 Subject 以及 switchMapinterval 来动态控制周期。每当主题发出一个值时,该值可用于指定间隔的周期:

const t = Date.now();

let subject = new Rx.Subject();
subject
  .switchMap(period => Rx.Observable.interval(period))
  .do(() => console.log('some action at time T+' + (Date.now() - t)))
  .take(8)
  .subscribe();

subject.next(50);
setTimeout(() => subject.next(100), 200);
setTimeout(() => subject.next(200), 400);
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>

关于javascript - rxjs 可观察到的变化间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42079800/

相关文章:

javascript - 如何提高jquery的性能或使用常规替换?

javascript - jquery - 是否可以查看缓存元素是否被隐藏

javascript - Puppeteer Crawler - 错误:net::ERR_TUNNEL_CONNECTION_FAILED

angular - 如何处理 rxjs 和 angular 5 中的 Observables,bootstrap typeahead 实现的问题

javascript - Angular4 - 我需要取消订阅 setTimeout 调用吗?

typescript - Angular 2 中 Observable.create((subscriber) => { ... }) 中的订阅者是什么类型

javascript - 使用 npm 安装的 d3 库不加载 json 文件

javascript - Angular:格式化时刻以在 html 中显示为日期

typescript - 在 typescript 的基类构造函数参数中引用子类的实例类型

node.js - 在终端中使用 tsc 编译类型脚本时出现类型脚本错误