Rxjs 从数组的可观察项开始,然后从可观察项推送数组上的项
我奇怪地陷入了以下困境:Rxjs 从数组的可观察项开始,然后从可观察项推送数组上的项,rxjs,observable,reactive-programming,rxjs5,Rxjs,Observable,Reactive Programming,Rxjs5,我奇怪地陷入了以下困境: 我有一个可观测的对象,它要么发射一个包含一些项目的数组,要么发射一个空数组,而这个可观测对象只发射一次,我们称之为startingArray$ 然后我有一个hot observate,它会发出我想在发出startingArray后推送到startingArray的单个项目,我们称之为additions$ 什么代码为我提供了可观察的结果startingArrayPlusAdditions$,它会随着更多项的发射而不断增长 startingArrayPlusAdditio
- 我有一个可观测的对象,它要么发射一个包含一些项目的数组,要么发射一个空数组,而这个可观测对象只发射一次,我们称之为
startingArray$
- 然后我有一个hot observate,它会发出我想在发出
后推送到startingArray
的单个项目,我们称之为startingArray
additions$
- 什么代码为我提供了可观察的结果
,它会随着更多项的发射而不断增长李>startingArrayPlusAdditions$
应在每次startingArrayPlusAdditions$
发出时发出,但在additions$
最初发出时不应发出startingArray$
- 我不确定我是否理解你的所有问题,但这里有一个建议:
const { Observable } = Rx;
const startingArray$ = Observable.of([1, 2, 3]);
const additions$ = Observable.from([4, 5, 6, 7, 8]);
const startingArrayPlusAdditions$ = startingArray$
.combineLatest(additions$)
.scan((acc, current) => {
const [startingArray, addition] = current;
if (acc === null) {
return [...startingArray, addition];
} else {
acc.push(addition);
return acc;
}
}, null)
.do(console.log)
.subscribe();
输出为:
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7, 8]
正如你所问:
startingArrayPlusAdditions$应在每次additions$发射时发射,但不应在startingArray$最初发射时发射
这是一个可行的建议:我不确定我是否理解你所有的问题,但这里有一个建议:
const { Observable } = Rx;
const startingArray$ = Observable.of([1, 2, 3]);
const additions$ = Observable.from([4, 5, 6, 7, 8]);
const startingArrayPlusAdditions$ = startingArray$
.combineLatest(additions$)
.scan((acc, current) => {
const [startingArray, addition] = current;
if (acc === null) {
return [...startingArray, addition];
} else {
acc.push(addition);
return acc;
}
}, null)
.do(console.log)
.subscribe();
输出为:
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7, 8]
正如你所问:
startingArrayPlusAdditions$应在每次additions$发射时发射,但不应在startingArray$最初发射时发射
这里有一个有效的提示:我不知道什么时候应该发射
startingArray$
。@martinstartingArray$
也是一个热可观测对象,所以它决定自己何时发射。所有已知的是,它将只发射一次,它将是一个空数组或包含某些项的数组。一旦startingArray$
发出,那么应该收集additions$
。我不明白什么时候应该发出startingArray$
。@martinstartingArray$
也是一个热的可观察对象,所以它决定何时发出。所有已知的是,它将只发射一次,它将是一个空数组或包含某些项的数组。一旦startingArray$
发出,则应仅收集additions$
。。