RxJs:延迟 onNext 对于某些值
RxJs: delay onNext for some values with?
有没有办法延迟某些值的Next?,例如:
let subject = new Rx.BehaviorSubject({value: 100})
subject.onNext({ value: 123})
subject.onNext({ value: 999})
subject.onNext({ value: 120}) // could this be delayed with 500ms before being delivered to subscribers?
可能的选项:
- 使用不同的主题,一个有延迟,另一个没有(但我想避免这种情况)
- 使用 delayWithSelector(它不包含在 rx.lite.js 中,所以不是一个选项)
- 通过 setTimeout(() => subject.onNext({value:123}), 500) (看起来不是反应式的)
我认为最简单的
方法是平面映射可观察量并发出延迟的可观察量。
这样:
const {Observable} = Rx;
const source = Observable.interval(500)
.flatMap((e) => {
if (e % 2 === 0) {
return Observable.of(e)
.delay(2000);
}
else {
return Observable.of(e);
}
});
source
.subscribe(e => console.log(e));
这将为您提供如下结果:
"1, 3, 0, 5, 2, 7, 4, 9, 6"
更容易理解:
- = 250ms
-------- = 2000ms
interval(500)
0-1-2-3-4-5-6-7-8-9-(10)
.flatMap(...)
--------0---2---4---6
--1---3---5---7---9--
source (interval().flatMap())
--1---3-0-5-2-7-4-9-6
相关文章:
- AngularJS:必需属性适用于某些字段,但不适用于其他字段
- Phonegap 3.2.0 android应用程序后退按钮剪切仅适用于某些页面
- Datatables-仅应用于某些表的筛选器
- 如何防止我的$('form').submit(函数(事件))应用于某些表单
- Chrome壁纸API适用于某些图像,不适用于其他图像,没有明显的原因
- jQuery中的跨域请求仅适用于某些文件
- 在弹出窗口中丢失 asp.net 会话.仅在IE中,仅适用于某些用户
- 简单代码仅适用于某些编辑器,而不适用于其他任何地方
- 如何使用 jquery 将 css 类应用于某些元素
- 图像名称返回为未定义,但仅适用于某些图像
- 将钩子应用于某些路由节点.js
- Javascript正则表达式仅适用于某些网站
- iPhone jquery/ajax仅适用于某些实例
- pdf.js只适用于某些pdf文件吗?
- 如何使一个Jquery片段只适用于某些特定的标签
- 父节点上的事件委托仅适用于某些事件
- Javascript函数只适用于某些"alert()"在里面
- JS append to child只适用于某些网页
- 为什么$scope应用于某些表达式而不应用于其他表达式?
- 浏览器的js语法错误取决于服务器…仅适用于某些浏览器