小编Fab*_*gne的帖子

如何以非阻塞方式组合可观察物?

我有一组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?

javascript rxjs angular

3
推荐指数
1
解决办法
94
查看次数

标签 统计

angular ×1

javascript ×1

rxjs ×1