没有订阅时的默认操作?

时间:2017-12-27 17:28:37

标签: angular

我们有一个通用的HTTP服务来包装一些HTTP行为。当出现错误时,我们将错误添加到BehaviorSubject。

我想知道是否有办法以某种方式...只有在没有订阅主题时才显示此错误。

return this.$http.get(url, jsonData).map((res) => res.json().response_data)
  .catch((err) => {
    this._errors.next(err);
});

基本上尝试实现HTTP错误的“最终”处理,如果没有其他处理它的话。

1 个答案:

答案 0 :(得分:1)

您可以将带有handled标志的对象传递给订阅者,在处理错误后,应将标志设置为true。在通知订阅者之后未设置标志,显示默认错误消息。

export class ErrorHandling {
    public handled: boolean = false;
    constructor(public error: any) {
    }
}

return this.$http.get(url, jsonData).map((res) => res.json().response_data)
  .catch((err) => {
    let errorHandling = new ErrorHandling(err);
    this._errors.next(errorHandling);
    if (!errorHandling.handled) {
        // The error was not handled, show default message
        ...
    }
});