我试图在一个http调用中调用多个http调用,并将最终调用的结果返回为Observable。在完成多个http调用之前,主要的http调用将返回Observable。
我的包装器http代码是这样的
public mainHttpRapper(url, requestData): Observable <any> {
this.http.post(url, requestData)
.map( (result: any) => {
if( result.status === 'success') {
return result;
}else if(result.status === 'NOT_FOUND') {
// need to make calls for login process as session is not found,
this.multipleService.createLogin(url, requestData);
this.multipleService.notify.subscribe(result => {
return Observable.of(result);
}
}
});
}
因此,我在这里进行了多个http调用,然后最终在NOT_FOUND错误时尝试调用的调用。应该像正常可观察到的那样返回。但是这里的Observable始终是未定义的,我的http调用链稍后会发生。
多个呼叫服务看起来像
public notify = new EventEmitter<any>();
public createLogin(url, requestData) {
this.http.post(url, requestData)
.map(result => {}.subscribe(result => {
this.secondCall();
}
}
public secondCall() {
this.http.post(url, requestData)
.map(result => {}.subscribe(result => {
this.thirdCall();
}
}
public thirdCall() {
this.http.post(url, requestData)
.map(result => {}.subscribe(result1 => {
this.notiy.emit(result1)
}
}
在我的组件中,我将尝试以这种方式调用下面的http包装器函数
component.ts文件
this.mainWrapper.mainHttpRapper(url, requestData).subscribe(data => {
console.log(data) // data is undefined in the case of multiple calls
})
任何建议将不胜感激。