angular - 为什么嵌套订阅不好?

标签 angular rxjs

我知道应该避免嵌套订阅并应该使用 rxjs 运算符,但是我发现的有关此问题的文章通常只是说嵌套订阅不好,而没有解释原因(除了说“可能会导致问题”)。

我想知道是否有人可以帮助解决这个问题?谢谢你。

最佳答案

let sub1, sub2, sub3, sub4;
sub1 = service.call1().subscribe(result1 => {
  sub2 = service.call2(result1).subscribe(result2 => {
    sub3 = service.call3(result2).subscribe(result3 => {
      sub4 = service.call4(result3).subscribe(result4 => {
        // Do stuff with result 4
      });
    });
  });
});

对比
let sub = service.call1().pipe(
  switchMap(result1 => service.call2(result1)),
  switchMap(result2 => service.call3(result2)),
  switchMap(result3 => service.call4(result3)),
  switchMap(result4 => service.call5(result4))
)

关于angular - 为什么嵌套订阅不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58797081/

相关文章:

Angular 4 - 取消订阅的最佳方式

angular - 在单个 Angular 应用程序中路由多个项目

javascript - 我如何将可观察对象应用到复选框以验证它是否被选中,从而能够重新加载我的应用程序页面?

javascript - Angular,HTTP Get 有效,Post 收到 CORS 错误

java - Spring启动Angular2,以JSON返回PDF

angular - 如果Angular 2中没有数据字段,如何不出错

angular - Observable.subscribe() 与带有 async/await 的 Promise

Angular2,systemjs,无法使用 Rx.umd.js

angular - 类型错误 : Object doesn't support property or method 'map' - AngularJS2

typescript - 如何在 ngrx effects 中使用之前 http 调用的 payload