在 Angular 2 中,我正在使用多个服务,但我无法在第二个 API 的订阅功能中从第一个 Api 获取数据,因此请建议我合适的答案。
最佳答案
就像 2 个异步 HTTP 请求一样简单。当第一个请求触发时,在获得响应之前它会触发第二个请求。
在 Angular 中,情况也是如此。为了避免这种情况,Angular 引入了 ForkJoin:
Fork-join 用于同时创建多个 HTTP 请求,并在收到所有请求的响应后调用最终的订阅方法。
Observable.forkJoin(
this.http.post(glob.BASE_API_URL_HOTEL + "hotel/getRoomType?hotelCode=" + this.hotel,{}).map(res => res.json()),
this.http.get(glob.BASE_API_URL_HOTEL + "hotel/getBedType").map(res => res.json())
).subscribe((data)=>{
this.roomType = data[0].data;
this.getBedType = data[1].data;
}
在这里,两个请求同时发起,在订阅回调中您将获得所有响应的数组。
关于angular - 当我触发两个并行 http 请求时未获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760083/