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都没有经验。根据文档,我可以使用很多不同的热/冷观察对象(香草、主题、重放主题、行为主题)。不确定什么是最好的匹配。