【发布时间】:2018-02-22 05:44:21
【问题描述】:
代码:
const Rx = require('rxjs')
const data = [
{ name: 'Zachary', age: 21 },
{ name: 'John', age: 20 },
{ name: 'Louise', age: 14 },
{ name: 'Borg', age: 15 }
]
const dataSubj$ = new Rx.Subject()
function getDataStream() {
return dataSubj$.asObservable().startWith(data);
}
getDataStream()
.mergeMap(Rx.Observable.from)
.scan((arr, person) => {
arr.push(person)
return arr
}, [])
.subscribe(val => console.log('val: ', val));
使用 .reduce(...) 而不是 .scan(...) 返回一个空数组并且不打印任何内容。 dataSub$ 的观察者应该收到一个数组。
为什么 scan 允许数据元素通过,而 reduce 不允许?
注意:我使用的是 mergeMap,因为我会先过滤数组的元素,然后再将它们还原为单个数组。
【问题讨论】: