创建与转换

RxJS scan

像 reduce 一样累计,但每次累计后都会立即发出中间结果。

scan((total, value) => total + value, 0)

时间线如何变化

  1. 1
    累计得到 1

    种子 0 加上第一个值 1。

  2. 2
    累计得到 3

    上一次结果会成为下一次的 total。

  3. 3
    累计得到 6

    scan 会发出每一个中间累计值。

  4. 4
    累计得到 10

    源流完成,最后的累计值为 10。

受支持的示例代码

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

import { of, scan } from 'rxjs'

const total$ = of(1, 2, 3, 4).pipe(
  scan((total, value) => total + value, 0)
)

total$.subscribe(console.log)