合并映射
这里的运算符很好,因为API请求发出1个事件,然后完成,但要精确一些
请使用switchmap或concatmap而不是mergemap
. 如果你感兴趣的话,请看一下这篇关于这些操作员的文章。
RxJs Mapping Operators: switchMap, mergeMap, concatMap
关于您的代码块,我建议您使用类似的代码块:
this._service.addUserToDB1(payload).pipe(
catchError(errordb1 => {
// do something with error if you want
return Observable.throw(new Error(errordb1));
}),
tap(resp => this.resDB1 = resp),
switchMap(resdb1 => this._tokenService.getToken),
catchError(errorToken => {
// do something with error if you want
return Observable.throw(new Error(errorToken));
}),
switchMap(token => this._service.addUserToDb2(
this.resDB1,
this.organizationId,
this.practitionerId,
token
)),
catchError(errordb2 => {
// do something with error if you want
return Observable.throw(new Error(errordb2));
}),
).subscribe(
resdb2Response => {
},
anyError => {
// any of the errors will come here
}
)
-
tap()
操作人员就像是在做一些事情,不要将任何事情更改为已发出的事件。当您只想做一些事情时,最好点击而不是地图,而不是转换发射的事件。