使用rxjs的条件发射延迟 [英] Conditional emission delays with rxjs
本文介绍了使用rxjs的条件发射延迟的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何从数据和盖茨获得可观察到的结果?
How to get the Out observable from Data and Gates?
- 数据是任何类型的可观察对象,例如JSON对象要发送到远程后端
- Gates是一个布尔型可观察值,其中刻度线对应于true,而叉号对应于false.例如,Internet连接表示为true表示网络可以访问,而false表示断开连接.
- Out是所得的可观察对象,它与Data发出相同的信号,有时会立即发出,有时会延迟,具体取决于先前的门.例如,我可以订阅Out,以便在连接到Internet时将发出的JSON对象发布到远程API.
推荐答案
受此帖子的启发,以下内容似乎产生了预期的行为:
Inspired by contributions to this post, the following seems to yield the desired behaviors:
const ticks$ = gates$.filter(b => b)
const crosses$ = gates$.filter(b => !b)
const tickedData$ = data$.windowToggle(ticks$, _ => crosses$.take(1)).switch()
const crossedDataBuffers$ = data$.bufferToggle(crosses$, _ => ticks$.take(1))
const crossedData$ = Rx.Observable.from(crossedDataBuffers$)
const out$ = tickedData$.merge(crossedData$)
它可能会变得更简单,可以在 https://jsfiddle.net/KristjanLaane/6kbgnp41上播放/
It could possibly be made simpler, have a play at https://jsfiddle.net/KristjanLaane/6kbgnp41/
这篇关于使用rxjs的条件发射延迟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文