RxJS scan
像 reduce 一样累计,但每次累计后都会立即发出中间结果。
scan((total, value) => total + value, 0)时间线如何变化
- 1累计得到 1
种子 0 加上第一个值 1。
- 2累计得到 3
上一次结果会成为下一次的 total。
- 3累计得到 6
scan 会发出每一个中间累计值。
- 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)