Typescript 将异步更新累积到单个可观察对象中

Typescript 将异步更新累积到单个可观察对象中,typescript,asynchronous,rxjs,observable,Typescript,Asynchronous,Rxjs,Observable,在我的组件中,我有可观察的项目数组 项目:可观察 在我的ServiceItemProvider中,我还有一个返回新更新的方法 ItemProvider.getUpdates():可观察{…} 我想将getUpdates()的结果附加到项中 第一项为空 items = [] method getUpdates() is called and returns array [item1, item2, item3] we add these items into items array items

在我的组件中,我有可观察的项目数组

项目:可观察

在我的ServiceItemProvider中,我还有一个返回新更新的方法

ItemProvider.getUpdates():可观察{…}

我想将
getUpdates()
的结果附加到
项中

第一项为空

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]

当您想要组合现有的观测值时,可以使用一系列不同的操作符,例如concat、merge、combineLatest、withLatest from。通常最好使用这些方法将两个观察值合并为一个,而不是使用对象

在您给出的示例中,如果您希望将一个可观察对象附加到另一个可观察对象,concat操作符是显而易见的选项,例如

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操作员来说,通过组合观测值来工作需要完成。如果它们没有完成,您可以尝试使用merge操作符,但在这种情况下,您无法保证它们的组合顺序。

您尝试了什么?还是你希望我们为你做这件事?@MikeTung Oh boy。。。不,我没有。我对Rxjs和typescript都没有经验。根据文档,我可以使用很多不同的热/冷观察对象(香草、主题、重放主题、行为主题)。不确定什么是最好的匹配。