我有一组Observable,它们分别检索不同的数据类型。我将那些Observable链接起来,以获得我想要的页面所有数据。事实是所有这些信息都是独立的,因此加载一个信息不应阻止或干扰加载其他信息。我无法实现。
这是我目前所做的一个示例:
getAll(): Observable<any[]> {
return this.getHome().pipe(
tap((home: Home) => this.application = home),
mergeMap((home: Home) =>
combineLatest([
this.getAssets(home.images).pipe(defaultIfEmpty([])),
this.getStyling(home.styling).pipe(defaultIfEmpty({})),
this.getCategories(home.categories).pipe(defaultIfEmpty([])),
])
)
);
}
Run Code Online (Sandbox Code Playgroud)
在这里,Observable已成功链接,所以我得到了我想要的所有数据,但是combineLatest()一旦前一个请求完成,便会发出下一个请求,一旦一切完成,父级就会发出收集的数据,这会产生延迟。我一直在尝试使用merge()而不是,combineLatest()这样接收到的每个数据都会立即将其发送给父级Observable,但是显然我无法做到这一点
因此,如何管理这些Observable链,以便子Observable中的每个提交都直接发送给父Observable?