使用 rxjs 进行条件发射延迟

Cel*_*Cel 6 reactive-programming observable rxjs rxjs5 angular

千字

从图片到代码?

如何从Data和Gate中获取Out observable?

  • 数据是任何类型的可观察对象,例如要发送到远程后端的 JSON 对象
  • Gates 是一个布尔可观察量,其中刻度线对应 true,叉号对应 false。例如,在互联网连接中,true 表示网络可访问,false 表示网络断开。
  • Out 是结果可观察值,它发出与 Data 相同的信号,有时立即,有时延迟,具体取决于前面的门。例如,我可以订阅 Out,以便在连接到 Internet 时将发出的 JSON 对象发布到远程 API。

Cel*_*Cel 1

受本文贡献的启发,以下内容似乎产生了所需的行为:

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$)
Run Code Online (Sandbox Code Playgroud)

它可能会变得更简单,可以玩一下https://jsfiddle.net/KristjanLaane/6kbgnp41/