简体   繁体   English

将两个可观察数组合并为一个可观察数组

[英]merge two observables array into single observable array

I have a Observable array similarIdeasObservable$ and another Observable array being getting from server by like this.ideaService.getSimilarIdeas() . 我有一个可观测阵列similarIdeasObservable$ ,另一个可观测阵列是从服务器获取由像this.ideaService.getSimilarIdeas() I want to merge these two Observable arrays without using subscribe. 我想在不使用订阅的情况下合并这两个Observable数组。 How Can I do this? 我怎样才能做到这一点?

I am trying following way 我正在尝试以下方式

 this.similarIdeasObservable$.pipe(concat(this.ideaService.getSimilarIdeas(this.idea).pipe(
        concatMap(i => i),
        toArray(),
        catchError(error => {
          throw error;
        }),
        finalize(() => {
          this.loading = false;
        })
      )));

concat is deprecated. concat已弃用。

I would recommend you to use forkJoin . 我建议您使用forkJoin

The idea of how forkJoin works is that it requires the input observables ( observableA and observableB on the below example) to be completed, and it will eventually be used to return an observable represented by an array, which consists of the values returned by the input observables. forkJoin如何工作的想法是,它需要完成输入的可observableA forkJoin (在下面的示例中为observableAobservableB ),并且最终将其用于返回由数组表示的可观察变量,该数组由输入返回的值组成可观察的。

import { forkJoin } from 'rxjs';

const observableA = this.similarIdeasObservable$;
const observableB = this.ideaService.getSimilarIdeas(this.idea);

forkJoin(observableA, observableB);

You can use merge to merge multiple observable. 您可以使用merge合并多个可观察的对象。

eg 例如

 import { merge } from 'rxjs'; const example = merge( similarIdeasObservable$, this.ideaService.getSimilarIdeas(this.idea) ); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM