RxJs-创建Observable的Observable数组的正确模式/方式是什么?

对于RxJ来说是相当陌生的东西,他试图将正确的模式包裹在脑海中,以简单地创建一个Observable数组Observable。

我想检索用户帖子列表。帖子本身应该是Observables,我想将它们全部保留在Observable数组中,以便在数组更改时,应通知调用代码并更新订阅到帖子“列表”的任何内容。这很简单,但是我也希望每个帖子都是可观察的,因此,如果我从中检索特定的帖子[i],那么我也应该能够订阅这些单独的对象。 正确的方法是什么?

我正在使用Angular 9,我有:

public getPosts(): Observable<Array<Post>> {
    return new Promise((resolve, reject) = {
        let posts: Observable<Array<Post>> = new Observable<Array<Post>>();
        this.get<Array<Post>>('posts').subscribe(r => {
            posts = from(r);
            return resolve(posts);
        });
    });
}

这给了我一个Observable>,但是我应该如何创建Observable >>? 这是反模式吗?

评论
  • qenim
    qenim 回复

    It all comes to convenience, if your server serves you differential data of what changed in post, then go ahead and create Observable<Observable<Post>[]>.

    In your post, however, there are multiple problems. You cannot mix Observables with Promises. The method getPosts will return only the first post you get from API.

    这是要求的解决方案,但我不确定,这是您真正想要的...

    public getPosts(): Observable<Array<Observable<Post>>> {
      return this.get('posts').pipe(
        switchMap(posts => combineLatest(
          posts.map(post => this.get('post', post.id))
        )),
      );
    }