错误处理

如果出现意外事件,我们可以在Observable流上引发一个错误,并在订阅例程中使用保留用于处理错误的函数来查看发生了什么。

  1. export class App {
  2. values: number[] = [];
  3. anyErrors: Error;
  4. private data: Observable<number[]>;
  5. constructor() {
  6. this.data = new Observable(observer => {
  7. setTimeout(() => {
  8. observer.next(10);
  9. }, 1500);
  10. setTimeout(() => {
  11. observer.error(new Error('Something bad happened!'));
  12. }, 2000);
  13. setTimeout(() => {
  14. observer.next(50);
  15. }, 2500);
  16. });
  17. let subscription = this.data.subscribe(
  18. value => this.values.push(value),
  19. error => this.anyErrors = error
  20. );
  21. }
  22. }

这里出现一个错误并捕获。 需要注意的一点是,如果我们在引发错误后包含一个.complete(),这个事件不会真正触发。 因此,您应该记住在错误处理程序中包含一些调用,这将关闭应用程序中的任何可视加载状态。