我想知道是否有多个请求:
如果我的$http request 1
开始,请说$http request 1
结束并尝试拨打$http request 2
。 我的问题如何创建多个请求?
例如:致电$http request 1
然后$http request 2
。
答案 0 :(得分:4)
据我了解,您尝试制作多个http请求,然后在所有请求结束时处理响应。例如,您可能需要从多个源加载数据,并延迟后加载逻辑,直到所有数据都已加载。
如果是这种情况,您可以使用ReactiveX Observables,因为它提供了一个名为forkJoin()
的方法来包装多个Observable。
import {Injectable} from '@angular/core';
import {Http, Response} from '@angular/http';
import {Observable} from 'rxjs/Rx';
@Injectable()
export class MultipleHttpService {
constructor(private http:Http) { }
// If any single request fails, the entire operation will result in an error state.
getData0AndData1() {
return Observable.forkJoin(
this.http.get('/app/data0.json').map((res:Response) => res.json()),
this.http.get('/app/data1.json').map((res:Response) => res.json())
);
}
}
然后你可以通过订阅这个observable获得所有数据:
// Code in your page ...
this.myMultipleHttpService.getData0AndData1()
.subscribe(
data => {
this.data0= data[0]
this.data1 = data[1]
},
err => console.error(err)
);