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 [关闭]