merge和concat区别

Posted szy-du

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了merge和concat区别相关的知识,希望对你有一定的参考价值。

Rxjs中merge和concat区别:

1、相同点:

都是将多个可观察输入对象合并为一个可观测输出对象,通过订阅获取输入客观擦对象的弹出的值;

 concat中只要有一个输入可观察对象发生错误,其后面的输入可观察对象无法弹出其值,即订阅终止;merge存在竞争关系,有一个输入可观察对象发生错误,也会 终止订阅。

2、不同点:

merge是并联,同步发生,存在竞争关系;concat是串联,按照输入顺序,第一个可观测对象的值弹出完全后,接着开始弹出第二个可观察对象,依次输出。

3、事实上,concat相当于将并发参数设置为1的merge操作符,即 concat(inputObv1,inputObv2, inputObv3, ....) === merge(inputObv1,inputObv2, inputObv3, ...., 1)

  

 1 const o1 = new Observable<string>(observer => 
 2       timer(200).subscribe(() => 
 3         observer.next(‘2s‘);
 4         observer.error(‘error 第一个输入可观擦对象报错,后续可观擦对象终止订阅‘);
 5         observer.complete();
 6       );
 7     );
 8   
 9     const o2 = new Observable<string>(observer => 
10       timer(1000).subscribe(() => 
11         observer.next(‘1s‘);
12         observer.complete();
13       );
14     );
15     
16     concat(o1, o2).subscribe(
17       next(value) 
18         console.log(‘value: ‘, value);
19       ,
20       error(reason) 
21         console.log(‘reason:‘, reason);
22       ,
23       complete() 
24         console.log(‘complete‘);
25       
26     );
27     
28     merge(o1, o2, 1).subscribe(
29       next(value) 
30         console.log(‘value: ‘, value);
31       ,
32       error(reason) 
33         console.log(‘reason:‘, reason);
34       ,
35       complete() 
36         console.log(‘complete‘);
37       
38     );
39   

 

以上是关于merge和concat区别的主要内容,如果未能解决你的问题,请参考以下文章

concat()merge()的区别

jQuery.merge与concat的区别

pd.concat()与pd.merge()之间的区别,为什么我得到错误的输出?

python-dataframe的合并(append, merge, concat, join)

实战讲解pandas中merge, join, concat的区别

StringBuilder的append方法和String+String的区别