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区别的主要内容,如果未能解决你的问题,请参考以下文章
pd.concat()与pd.merge()之间的区别,为什么我得到错误的输出?
python-dataframe的合并(append, merge, concat, join)