使用MergeMap和forkJoin合并多个Observables并返回一个Observable-Angular 4

时间:2018-07-26 14:45:34

标签: angular http angular5 observable subscribe

我试图在一个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
 })

任何建议将不胜感激。

0 个答案:

没有答案