1 scan( (previousValue,currentValue)=>previousValue+currentValue),seed?)
函数功能:
提供一个数组(Observable),对数组的元素累计求和
参数解析:
previousValue: 上一次调用回调返回的值,或者是提供的初始值
currentValue: 数组中当前被处理的元素
seed: 用以提供初始值,如果 seed 未被定义,则数组的第一个元素被当作初始值,此时第一次并不会被计算,而是将元素的第一个值作为第一个返回值,将返回值作为参数,与第二个数组元素相加,计算结果作为第二个返回值,依次计算。
返回结果:一系列可观察对象
示例:
const number$ = of(1, 2, 3)
number$.pipe( scan((total, n) => total + n)).subscribe(x => {
console.log(x);
})
上面代码中,提供了 previousValue 和 currentValue,没有提供 seed,所以第一次执行时候,将 1 作为初始状态返回,然后执行 1+2,返回 3, 再执行 3+3,返回 6,返回结果是 1,3,6
const number$ = of(1, 2, 3)
number$.pipe( scan((total, n) => total + n)).subscribe(x => {
console.log(x);
})
上面代码中,提供了 previousValue 、 currentValue 和 seed,seed作为起始状态,所以第一次执行时候,执行1+4,返回5,然后执行 5+2,返回 7, 再执行 7+3,返回 10,返回结果是 5,7,10