展平嵌套订阅

用户3244479

给定以下内容:

this.activatedRoute.parent.params
  .subscribe(params => {
    let fooId = +params['fooId'];

    this.activatedRoute.params
      .subscribe(params => {
        let barId = +params['barId'];

        this.fooBarService.getFooBars(fooId, barId)
          .subscribe(fooBars => {
            this.fooBars = fooBars;
          });
      });
  });

可以通过以下方式简化部分嵌套:

this.activatedRoute.parent.params
  .subscribe(params => {
    let foo = +params['fooId'];

    this.activatedRoute.params
      .switchMap(params => this.fooBarService.getFooBars(fooId, +params['barId']))
      .subscribe(fooBars => {
        this.fooBars = fooBars;
      });
  });

但是是否可以展平剩余的嵌套订阅?

用户3244479

使用 combineLatest 运算符:

Observable
  .combineLatest(this.activatedRoute.parent.params, this.activatedRoute.params)
  .switchMap(data => this.fooBarService.getFooBars(+(data[0])['fooId'], +(data[1])['barId']))
  .subscribe(fooBars => {
    this.fooBars = fooBars;
  });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章