Как заставить наблюдаемое ожидание завершить предыдущее наблюдаемое - PullRequest
1 голос
/ 24 июня 2019

У меня есть список наблюдаемых, которые должны синхронно вызывать 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;
    }
 } 

Ответы [ 2 ]

2 голосов
/ 24 июня 2019

Вы можете использовать concat (observables: ... *): Observable.При этом наблюдаемое будет ждать завершения другого.Пожалуйста, обратитесь по ссылке - https://www.learnrxjs.io/operators/combination/concat.html

1 голос
/ 24 июня 2019
myService.get1().pipe(
  switchMap(responseOfGet1 => myService.get2())
).subscribe(responseOfGet2 => { ... });

Документация

...