首页 > 其他分享 >mergeMap、switchMap、concatMap、exhaustMap 之间的区别

mergeMap、switchMap、concatMap、exhaustMap 之间的区别

时间:2024-09-20 21:14:33浏览次数:1  
标签:登录 value switchMap 运算符 点击 concatMap exhaustMap click 0third

您好,在作为 angular 开发人员进行面试时,您可能会被问到几个有关 rxj 运算符及其差异的问题。 最常见的问题之一是“mergemap、switchmap、concatmap、exhaustmap 有什么区别?”让我们深入探讨并用简单的术语解释它们。我将使用一个简单的例子来解释行为上的差异:import { interval, take, tap, from } from 'rxjs';import { switchmap, mergemap, concatmap, exhaustmap,} from 'rxjs/operators';const mapoperators = [ mergemap, switchmap, concatmap, exhaustmap];const selectedmap = mapoperators[0]; // interval(500).pipe( tap((intervalvalue: number) => console.log( `${click} value: ${intervalvalue}` ) ), take(3) ) ) ) .subscribe();登录后复制在您可以在 stackblitz 上进行实验的代码示例中,您可以看到 3 次用户点击的模拟现在,让我们看看每个运算符将返回什么 合并地图first clicksecond clickthird clickfirst click value: 0second click value: 0third click value: 0first click value: 1second click value: 1third click value: 1first click value: 2second click value: 2third click value: 2登录后复制mergemap 运算符并行运行排放,这就是你看到的原因first click value: 0second click value: 0third click value: 0登录后复制值为 0 切换地图first clicksecond clickthird clickthird click value: 0third click value: 1third click value: 2登录后复制switchmap 运算符将在每次新点击后取消前一个,在我们的例子中,第一次点击将被第二次点击取消,第二次点击将被取消被第三次点击取消,结果我们将看到第三次点击值third click value: 0third click value: 1third click value: 2登录后复制 concatmapfirst clicksecond clickthird clickfirst click value: 0first click value: 1first click value: 2second click value: 0second click value: 1second click value: 2third click value: 0third click value: 1third click value: 2登录后复制concatmap 运算符将记住所有点击,并以相同的顺序 console.log 它们,在我们的例子中,第一次点击,第二次点击,第三次点击为你在控制台中看到first click value: 0first click value: 1first click value: 2second click value: 0second click value: 1second click value: 2third click value: 0third click value: 1third click value: 2登录后复制 排气图first clicksecond clickthird clickfirst click value: 0first click value: 1first click value: 2登录后复制exhaustmap 运算符将阻塞流,直到第一次点击完成,在我们的例子中,第二次点击和第三次点击将被忽略First Click Value: 0First Click Value: 1First Click Value: 2登录后复制现在您了解了这些运算符之间的差异,您可以想象选择错误的后果 以上就是mergeMap、switchMap、concatMap、exhaustMap 之间的区别的详细内容,更多请关注我的其它相关文章!

标签:登录,value,switchMap,运算符,点击,concatMap,exhaustMap,click,0third
From: https://www.cnblogs.com/aow054/p/18423287

相关文章

  • 在我的 ngrx 效果中,switchMap 和其他运算符的区别
    我有以下效果publicSetProperTab$=createEffect(publicSetProperTab$=createEffect(()=>{返回this.actions$.pipe(ofType(actions.SetProperTab)、switchMap((action)=>;this.store$.select(selectors.GetHasLogicalPr......
  • 30 天精通 RxJS (18):可观察运算符 - switchMap, mergeMap, concatMap
    今天我们要讲三个非常重要的operators,这三个operators在很多的RxJS相关的library的使用示例上都会看到。很多初学者在使用这些library时,看到这三个operators很可能就放弃了,但其实如果有把这个系列的文章完整看过的话,现在应该就能很好接受跟理解。OperatorsconcatMapconcat......
  • RxJS中高阶映射操作符的全面讲解:switchMap, mergeMap, concatMap (and exhaustMap)
    原文链接:https://blog.angular-university.io/rxjs-higher-order-mapping/有一些在日常开发中常用的RxJS的操作符是高阶操作符:switchMap,mergeMap,concatMap,以及exhaustMap。举个例子,程序中大多数的网络请求都是通过以上某个操作符来完成的,所以为了能够写出几乎所有反应式编程,必须......
  • Flux中的map、flatMap、concatMap的区别
    flatMap、map和concatMap都是在Flux中用于进行数据转换和处理的方法,但它们在处理元素和顺序上有一些区别:map方法:map方法用于对Flux中的每个元素进行一对一的转换。对于每个元素,map方法都会应用一个转换函数,并将转换后的结果作为新的元素放入新的Flux中。转换函数的返回值......
  • Rxjs map, mergeMap 和 switchMap 的区别和联系
    map、mergeMap和switchMap是RxJS中的三个主要运算符,在SAPSpartacus开发中有着广泛的使用场景。mapmap是Observables中最常见的运算符。它的作用与数组中的映......