【发布时间】:2019-06-12 21:33:59
【问题描述】:
我有一组 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([])),
])
)
);
}
在这里,Observable 已成功链接,所以我得到了我想要的所有数据,但是 combineLatest() 在上一个请求完成后执行下一个请求,并且一旦一切完成,父级就会发出收集到的数据,这会造成延迟。
我一直在尝试使用 merge() 而不是 combineLatest() 以便收到的每个数据都会立即将其发送到父 Observable,但显然我不能这样做
那么,我怎样才能设法链接这些 Observable,以便子 Observable 中的每个提交都直接发送到父 Observable?
【问题讨论】:
-
"我怎样才能设法链接这些 Observables,以便子 Observable 中的每个提交都直接发送到父 Observable",这就是问题,你怎么知道正在发出什么类型?如果你想发射到一个流中,你可以连接一个主题。
-
@AvinKavish 我需要对主题进行调查,您对此有很好的阅读吗?
-
是的,请稍等,我也有一个半书面的主题答案。
-
看看,它只是一个参考实现。主题可以通过多种不同的方式组合。
标签: javascript angular rxjs