Angular ngOnInit 如何将订阅结果用于另一个订阅/后端调用?

Posted

技术标签:

【中文标题】Angular ngOnInit 如何将订阅结果用于另一个订阅/后端调用?【英文标题】:Angular ngOnInit how to use subscribe result for another subscribe/backend call? 【发布时间】:2020-07-30 05:04:16 【问题描述】:

我有这个 ngOnInit。第一次订阅效果很好并带来了价值。第二个调用后端,获取响应(一个非空对象),但它没有使用响应值设置 this.taxas(是的,类型正确,我可以看到 Postman 的返回)。我想这可能是个问题,因为我在 ngOnInit 上调用了多个订阅,但我不知道如何解决它。有人知道吗?

  ngOnInit() 

    this.sharedService.getMonthValueObservable().subscribe(x => 
      this.monthValue = x;
    );

    this.simuladorGvService.obterTaxasRecebaRapido(this.monthValue).subscribe(
      response => 
        this.taxas = response;
    );

    console.log(this.monthValue);
    console.log(this.taxas);

  

【问题讨论】:

【参考方案1】:

这是一个switchMap 用例:

import  switchMap  from 'rxjs/operators';

...

this.sharedService.getMonthValueObservable().pipe(
  switchMap(x => 
    this.monthValue = x;
    return this.simuladorGvService.obterTaxasRecebaRapido(x)
  )
).subscribe(response => 
  this.taxas = response;
  // log in subscribe, not set till it finishes executing.
  console.log(this.monthValue);
  console.log(this.taxas);
);

【讨论】:

以上是关于Angular ngOnInit 如何将订阅结果用于另一个订阅/后端调用?的主要内容,如果未能解决你的问题,请参考以下文章

Angular Jasmine 测试未在 ngOnInit 中触发订阅

在哪里订阅 Angular 中的 observable、构造函数或 ngoninit [关闭]

在 angular2 中的 ngOnInit 之后,在构造函数中订阅服务

Angular订阅推送对象到数组

订阅角度时无法在 ngoninit 中获得价值

Angular Universal Render 等待 Http 结果 Observable 订阅者