在 Angular 中链接可观察订阅的最佳方式?
Posted
技术标签:
【中文标题】在 Angular 中链接可观察订阅的最佳方式?【英文标题】:Best way to chain observable subscriptions in Angular? 【发布时间】:2018-12-09 00:45:15 【问题描述】:当我需要在获得另一个资源的结果后调用资源时,我总是嵌套订阅,如下所示:
this.paymentService.getPayment(this.currentUser.uid, this.code)
.valueChanges()
.subscribe(payment =>
this.payment = payment;
this.gymService.getGym(this.payment.gym)
.valueChanges()
.subscribe(gym =>
this.gym = gym;
);
);
我正在使用 Angular v6 和 AngularFire2。
两个端点(getPayment 和 getGym)都返回对象。有没有更优雅的方法可以做到这一点,而无需将一个调用嵌套在另一个调用中?
【问题讨论】:
blog.angularindepth.com/… coryrylan.com/blog/angular-multiple-http-requests-with-rxjs 【参考方案1】:有很多在线资源可以用来了解如何使用 rxjs 解决这种情况。
通常你最终会像这样使用switchMap
this.paymentService.getPayment(this.currentUser.uid, this.code)
.pipe(
switchMap(payment => this.gymService.getGym(payment.gym))
)
.subscribe(
this.gym = gym;
)
我故意跳过了valueChanges()
电话。我不知道它的作用,但它在反应式世界中听起来并不正确。
这是nice article about switchMap
。
【讨论】:
你应该这样做 > return this.gymService.getGym(this.payment.gym) 作业this.payment = payment;
现在不是不见了吗?
@Wintermute 你是对的,如果你需要在组件中付款你需要分配以上是关于在 Angular 中链接可观察订阅的最佳方式?的主要内容,如果未能解决你的问题,请参考以下文章
submitForm 上的 Angular 2 RxJS 可观察取消订阅
Angular RxJS入门笔记 (Observable可观察对象Subscribe订阅Observer观察者Subscription对象)