行为主题与Observable错误处理

时间:2017-06-15 11:03:48

标签: angular error-handling rxjs

我在Angular中使用rxJS并且有一组行为主题作为只读的Observable公开

public _data = new BehaviorSubject<DataItem[]>([]);
public readonly data$ = this._data.asObservable();

现在我注意到如果我直接订阅BehaviorSubject并且出现错误,它会将错误抛给控制台。

但如果我订阅Observable时出现同样的错误,我就不会收到任何消息,然后会自动取消订阅。

我知道这是预期的行为,但......

我想知道什么是避免错误代码重复的模式,例如

this.myDataService.data$.subscribe(d=> throwSomeError(), e=> handleError(e));
//or use this:
this.myDataService.data$.subscribe(d=> throwSomeError()).catch(e=> handleError(e));

handleError(e)

1 个答案:

答案 0 :(得分:0)

第二个选项将更好地工作,因为BehaviorSubject将始终在错误上终止流。

以下是更多信息:

How do I throw an error on a behaviour subject and continue the stream?