Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何使可观察对象等待前一个可观察对象完成_Angular_Rxjs6 - Fatal编程技术网

Angular 如何使可观察对象等待前一个可观察对象完成

Angular 如何使可观察对象等待前一个可观察对象完成,angular,rxjs6,Angular,Rxjs6,我有一个需要同步调用API的可观察对象列表。API异步操作失败。因此,一个可观察对象需要等待前一个可观察对象完成后才能执行,我已经编写了一个递归解决方案,如下所示,是否有更好的方法来执行 private myMethod(params) { let paramsCopy = params.slice(); let param = paramsCopy.shift(); if (param) { let resource: ResourceModel= para

我有一个需要同步调用API的可观察对象列表。API异步操作失败。因此,一个可观察对象需要等待前一个可观察对象完成后才能执行,我已经编写了一个递归解决方案,如下所示,是否有更好的方法来执行

 private myMethod(params) {
    let paramsCopy = params.slice();
    let param = paramsCopy.shift();
    if (param) {
     let resource: ResourceModel= param.resource;
     return resource.doPost(JSON.stringify(param.data))
                    .pipe(mergeMap(res => {return myMethod(paramsCopy)})
                    ,catchError((err) => handleError()));
    } else { 
       return //completed actions;
    }
 } 

您可以使用concat(可观测:…*):可观测。这样,被观察者将等待另一个完成。请参阅链接-

您可以使用
开关映射
操作符。看一看。使用
concatMap-在创建下一个之前,等待上一个可观察对象完成
myService.get1().pipe(
  switchMap(responseOfGet1 => myService.get2())
).subscribe(responseOfGet2 => { ... });