组合流

RxJS withLatestFrom

只在主 source 发出时,附带其他流的最新值。

click$.pipe(withLatestFrom(timer$))

时间线如何变化

  1. 1
    过早的 click

    timer$ 尚未发出首值,因此没有输出。

  2. 2
    timer$ 更新为 1

    辅助流更新不会单独触发输出。

  3. 3
    click 触发组合

    主流发出时带上 timer$ 的最新值 1。

  4. 4
    timer$ 更新为 3

    仍然只是保存最新值。

  5. 5
    下一次 click

    输出 [click, 3]。

受支持的示例代码

实验室只根据下列示例中的关键操作符生成预设时间线,不执行任意输入代码。

import { fromEvent, interval, withLatestFrom } from 'rxjs'

const clicks$ = fromEvent(document, 'click')
const timer$ = interval(1000)

clicks$.pipe(
  withLatestFrom(timer$)
).subscribe(console.log)