【发布时间】:2017-01-04 10:02:36
【问题描述】:
这行得通,但我有点紧张,因为我不确定这只是一种技巧还是一种好的做法。有人可以告诉我这是一种技巧还是好的做法?
我这样做是为了确保第一种方法在启动第二种方法之前完全运行。
如果这是一种不好的做法,我敢肯定,请提供一种更好的方法来实现它。
我有一个方法调用 HTTP GET 方法,然后在订阅中绑定它并调用另一个方法,该方法使用该数据调用另一个服务。
private bind(): void {
this.Service.get(this.Id)
.catch(this.logger.log)
.subscribe(
(customers: PersonalInfo[]) => {
this.customers = customers;
this.bindContactInfo();
}
);
}
private bindContactInfo():void{
this.Service.getContactInfo(this.Id)
.catch(this.logger.log)
.subscribe(
(contactInfo: ContactInformation[]) => {
// stuff in here
}
);
}
【问题讨论】:
-
在某些情况下,其他方法可能会更好(例如使用
mergeMap),但从subscribe()回调中调用其他方法并没有错。 -
我正在按照您的方式进行操作(几乎)。也许我对这些方法的结构有点不同。如果我有两个单独的 HTTP 调用,但一个需要来自第一个的信息,我会按照您的方式进行操作。如果方法不相互依赖,但是我有第三种方法我想在数据加载后调用,我通常会做一个
forkJoin,然后再调用第三种方法。
标签: angular typescript rxjs