我知道网上有关于效果错误处理的例子,但就我而言,我没有调用一个 http 服务,它返回一个可观察的可观察量,就像我找到的 99% 的例子一样,所以我不知所措地构建这些运算符以获得所需的效果。
我需要将我的 catchError(( 移动到我的 switchMap(( 中
switchMap( ( [ routerState, state ] ) => {
const tenantKey = routerState.params[ 'tenantKey' ];
if ( state ) {
if ( state.tenant && state.tenant.id === tenantKey ) {
return of( { type: '[TenantContext] Tenant Context Check Valid', payload: state.tenant } );
} else {
return of( new LoadContextAction( tenantKey ) );
}
} else {
return of( new LoadContextAction( tenantKey ) );
}
} ),
catchError( ( err ) => {
return of( { type: '[TenantContext] Error', payload: err } );
} )
我最终用map替换了switchMap。
map( ( [ routerState, state ] ) => {
const tenantKey = routerState.params[ 'tenantKey' ];
if ( state ) {
if ( state && state.id === tenantKey ) {
return {
type: '[TenantClubContext] Tenant Context Check Valid',
payload: state
};
} else {
return new LoadContextAction( tenantKey );
}
} else {
return new LoadContextAction( tenantKey );
}
} ),
catchError( err => {
return of( { type: '[TenantClubContext] Error', payload: err } );
} )