Javascript 将可观测数组值累积到单个最终数组中
如果我有两个可观察数组,Javascript 将可观测数组值累积到单个最终数组中,javascript,rxjs,observable,Javascript,Rxjs,Observable,如果我有两个可观察数组,x$和y$: let x = new BehaviorSubject([1,2,3]) let y = new BehaviorSubject([4,5,6]) let x$ = x.asObservable(); let y$ = y.asObservable(); 我想将其累积到一个值数组中,这样当订阅时将发出[1,2,3,4,5,6],我如何实现这一点 如果这么简单,您可以使用scan()收集所有值。源是什么都不重要,所以你可以合并两个观测值: Observabl
x$
和y$
:
let x = new BehaviorSubject([1,2,3])
let y = new BehaviorSubject([4,5,6])
let x$ = x.asObservable();
let y$ = y.asObservable();
我想将其累积到一个值数组中,这样当订阅时将发出
[1,2,3,4,5,6]
,我如何实现这一点 如果这么简单,您可以使用scan()
收集所有值。源是什么都不重要,所以你可以合并两个观测值:
Observable.merge(x, y)
.scan((acc, arr) => [...acc, ...arr], [])
.subscribe();
如果是这么简单,您可以使用
scan()
收集所有值。源是什么都不重要,所以你可以合并两个观测值:
Observable.merge(x, y)
.scan((acc, arr) => [...acc, ...arr], [])
.subscribe();
这取决于您是希望等到它们都完成,还是希望在它们到达时累积值。当您调用
x.next(7)
时,您期望发生什么?我希望它们在收到时累积。我希望[1,2,3,4,5,6,7]
,所以有时候你会推送数组,比如x.next([1,2,3])
,有时候推送单个值,比如x.next(7)
?我现在明白为什么这很麻烦了。我想我可以访问完整的值数组,因此我希望x.next([1,2,3,4])
和y.next([4,5,6,7])
发出[1,2,3,4,4,5,6,7]
这取决于您是想等到它们都完成还是想在它们到达时累积值。当您调用x.next(7)
时,您期望发生什么?我希望它们在收到时累积。我希望[1,2,3,4,5,6,7]
,所以有时候你会推送数组,比如x.next([1,2,3])
,有时候推送单个值,比如x.next(7)
?我现在明白为什么这很麻烦了。我想我可以访问完整的值数组,因此我希望x.next([1,2,3,4])
和y.next([4,5,6,7])
发出[1,2,3,4,4,5,6,7]
如果我附加到现有数组,您的响应将是正确的,但由于我提供了完整的数组,这会导致重复,因此您不希望在值到达时累积值,而是从两个观察值中合并两个最新值:)。如果我附加到现有数组,您的响应将是正确的,但因为我提供了完整的数组,这会导致重复,因此您不希望在值到达时累积值,而是从两个观察值中合并最近的两个值:)。