Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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_Typescript_Rxjs - Fatal编程技术网

Angular 如何为任何可观察对象实现共享(全局)捕获错误?

Angular 如何为任何可观察对象实现共享(全局)捕获错误?,angular,typescript,rxjs,Angular,Typescript,Rxjs,图像,我有下一个代码: if (something) { return A; } else { return B; } A和B是可观测的 我想捕捉两者中的错误,并以相同的方式处理 如何实现这一点 现在我要写这样的东西: const errorHadler = ...; if (something) { return A.pipe( catchError(errorHandler) ) } else { return B.pipe(

图像,我有下一个代码:

if (something) {
    return A;
} else {
    return B;
}
A和B是可观测的

我想捕捉两者中的错误,并以相同的方式处理

如何实现这一点

现在我要写这样的东西:

const errorHadler = ...;

if (something) {
    return A.pipe(
        catchError(errorHandler)
    )
} else {
    return B.pipe(
        catchError(errorHandler)
    )
}
两个观测值是否可以只使用一个catchError?

希望这将有助于:

getData(){
 if (something) {
  return A;
 } else {
  return B;
 }
}

this.getData.subscribe(response=>
 {
  // if success do logic here
 }, error=>{
   // Have commonn error handling logic here
});
希望这会有帮助。

希望这会有帮助:

getData(){
 if (something) {
  return A;
 } else {
  return B;
 }
}

this.getData.subscribe(response=>
 {
  // if success do logic here
 }, error=>{
   // Have commonn error handling logic here
});

希望这有帮助。

创建一个错误处理程序服务。通过设置providedIn:root将其作为一个单吨服务。在任何需要的地方调用此服务的errorHandler方法

@Injectable({
  providedIn: 'root'
})

export class ErrorhandlerService {

    errorHandler(){
       //logic goes here
    }

}


if (something) {
    return A.pipe(
        catchError(this.errorhandlerService.errorHandler)
    )
} else {
    return B.pipe(
        catchError(this.errorhandlerService.nerrorHandler)
    )
}

这种方法的优点是,您可以在整个应用程序中重用该服务。

创建一个错误处理程序服务。通过设置providedIn:root,将其设置为单吨服务。在任何需要的地方调用此服务的errorHandler方法

@Injectable({
  providedIn: 'root'
})

export class ErrorhandlerService {

    errorHandler(){
       //logic goes here
    }

}


if (something) {
    return A.pipe(
        catchError(this.errorhandlerService.errorHandler)
    )
} else {
    return B.pipe(
        catchError(this.errorhandlerService.nerrorHandler)
    )
}

这种方法的优点是,您可以在整个应用程序中重用该服务。

您尝试过这种方法吗

(condition ? A : B).pipe(catchError(errorHandler)).subscribe(() => {});

你试过这个吗

(condition ? A : B).pipe(catchError(errorHandler)).subscribe(() => {});

你可以在这种情况下实现拦截器。你可以在这种情况下实现拦截器。是的,这个想法帮助了我。谢谢。是的,这个主意对我有帮助。谢谢