2017-12-27 856 views
1

我们有一个通用的HTTP服务来包装一些HTTP行为。出现错误时,我们将该错误添加到BehaviorSubject。没有订阅时的默认操作?

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

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

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

+0

你可以传递给'this._errors.next'一个对象,它的'handles'标志最初设置为'false'。如果合适,用户应该将此标志设置为“真”。如果在调用'next'后仍然是'false',你可以显示默认的错误信息。这对你有用吗? – ConnorsFan

+0

这是一个简单的想法。我会给你一个镜头。 – Charlie

回答

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 
     ... 
    } 
}); 
+0

这个想法很好。很简单。哈哈。 – Charlie

相关问题