从一个数组的 observable 开始,然后将项目从一个 item observable 推送到它上面
Start with observable of an array and then push items on it from an item observable
我奇怪地坚持以下几点:
- 我有一个 Observable,它发射一个包含一些项目的数组或一个空数组,而这个 Observable 只发射一次——我们称它为
startingArray$
- 然后我有一个热的 Observable,它发出单个项目,一旦
startingArray
发出,我想将其推送到 startingArray
- 让我们称之为 additions$
- 什么代码给我生成的 observable
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$ should emit every time additions$ emits, but it should not emit when startingArray$ emits initially
这是一个可用的 Plunkr:https://plnkr.co/edit/rKXLJrmA7mSzpQgoemlD?p=preview
我奇怪地坚持以下几点:
- 我有一个 Observable,它发射一个包含一些项目的数组或一个空数组,而这个 Observable 只发射一次——我们称它为
startingArray$
- 然后我有一个热的 Observable,它发出单个项目,一旦
startingArray
发出,我想将其推送到startingArray
- 让我们称之为additions$
- 什么代码给我生成的 observable
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$ should emit every time additions$ emits, but it should not emit when startingArray$ emits initially
这是一个可用的 Plunkr:https://plnkr.co/edit/rKXLJrmA7mSzpQgoemlD?p=preview