假设所有嵌套的RxJS Subscribe都可以被mergeMap替换,这样安全吗?

假设所有嵌套的RxJS Subscribe都可以被mergeMap替换,这样安全吗?,rxjs,nested,subscribe,Rxjs,Nested,Subscribe,我必须为我新参与的一个巨大的角度项目重构一些代码。RxJS操作符的代码库的某些部分可以执行简单的嵌套订阅或复制/粘贴错误处理程序,而不是使用管道 可以安全地假设任何简单的1深度嵌套订阅都可以被合并映射替换吗 让我们采用这样的login方法: private login(){ this.userService.logIn(this.param1,this.param2).subscribe((loginResult:{})=>{ this.userService.getInfo(this.para

我必须为我新参与的一个巨大的角度项目重构一些代码。RxJS操作符的代码库的某些部分可以执行简单的嵌套订阅或复制/粘贴错误处理程序,而不是使用管道

可以安全地假设任何简单的1深度嵌套订阅都可以被合并映射替换吗

让我们采用这样的
login
方法:

private login(){
this.userService.logIn(this.param1,this.param2).subscribe((loginResult:{})=>{
this.userService.getInfo(this.param3).subscribe((用户:UserModel)=>{
//[登录逻辑]
},
(e) =>{
//[错误处理逻辑]
})
},(e)=>{
//[完全相同的复制/粘贴错误处理逻辑]
});
}
换成这个安全吗

private login(){
this.userService.logIn(this.param1,this.param2)
.烟斗(
mergeMap((x)=>this.userService.getInfo(this.param3))
)
.subscribe((用户:UserModel)=>{
//[重定向到“我的帐户”页面的登录逻辑]
},
(e) =>{
//[错误处理逻辑]
});
}

例如,在这里使用flatMap或switchMap有什么区别?

对于您的情况,我将使用switchMap

mergeMap/FlatMap:将每个发出的项转换为函数定义的新可观察项。并行执行执行并合并结果(也称为flatMap)顺序无关紧要

swicthMap:将每个发出的项转换为函数定义的新可观察项

-来自先前内部可观测的订阅服务器

-新的内部可观测的订阅服务器

-内部可观察对象合并到输出流

-当您提交一个新的可观察对象时,前一个可观察对象会多次被取消,并且只会发出最后一个可观察对象,这对于性能来说非常棒