在我的组件中,我有可观察的项目数组
items: Observable<Item[]>;
同样在我的服务项ItemProvider中,我有一个返回新更新的方法。
ItemProvider.getUpdates() : Observable<Item[]> {...};
我想将getUpdates()
的结果附加到items
。
第一项是空的
items = []
method getUpdates() is called and returns array [item1, item2, item3]
we add these items into items array
items = [item1, item2, item3]
method getUpdates() is called and returns array [item4, item5]
we add these items into items array
items = [item1, item2, item3, item4, item5]
答案 0 :(得分:0)
当您想要组合现有的可观察量时,您可以使用一系列不同的运算符,例如。 concat,merge,combineLatest,withLatest from。通常最好使用这些将两个可观察量组合成一个,而不是使用主题。
在你给出的例子中,你想要将一个observable附加到另一个obat运算符是明显的选择,例如。
let items = Observable.from([0]);
const updates = Observable.from([1, 2, 3]);
items = items.pipe(concat(updates));
items.subscribe(item => console.log(item)) // 0,1,2,3
const updates2 = Observable.from([4, 5, 6]);
items = items.pipe(concat(updates2));
items.subscribe(item => console.log(item)) // 0,1,2,3,4,5,6
要使concat运算符工作,但组合的observable需要完成。如果它们没有完成,那么您可以尝试合并运算符,但在这种情况下,您无法保证它们的组合顺序。