如何让 observable 等待前一个 observable 完成
How to make observable wait for the previous observable to complete
我有一个需要同步调用 API 的可观察对象列表。 API 无法进行异步操作。因此一个observable需要等待前一个observable完成后才能执行,我写了一个递归的解决方案如下图,有没有更好的方法呢
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;
}
}
myService.get1().pipe(
switchMap(responseOfGet1 => myService.get2())
).subscribe(responseOfGet2 => { ... });
你可以使用 concat(observables: ...*): Observable。有了这个,observable 将等待另一个完成。请参考 link - https://www.learnrxjs.io/operators/combination/concat.html
我有一个需要同步调用 API 的可观察对象列表。 API 无法进行异步操作。因此一个observable需要等待前一个observable完成后才能执行,我写了一个递归的解决方案如下图,有没有更好的方法呢
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;
}
}
myService.get1().pipe(
switchMap(responseOfGet1 => myService.get2())
).subscribe(responseOfGet2 => { ... });
你可以使用 concat(observables: ...*): Observable。有了这个,observable 将等待另一个完成。请参考 link - https://www.learnrxjs.io/operators/combination/concat.html