RxJS之catchError

Catches errors on the observable to be handled by returning a new observable or throwing an error.

返回新的可观察对象

 

import { Component, OnInit } from '@angular/core';
import { of } from 'rxjs/observable/of';
import { map, catchError, retry } from 'rxjs/operators';

@Component({
  selector: 'app-error',
  templateUrl: './error.component.html',
  styleUrls: ['./error.component.css']
})
export class ErrorComponent implements OnInit {

  constructor() { }

  ngOnInit() {
    of('Leo', 'Raph', 'Mikey', 'Don').pipe(
      map(turtle => {
        if (turtle === 'Mikey') {
          throw new Error('出错了');
        }
        return turtle;
      }),
      catchError(err => of('Aioria', 'Mu'))
    ).subscribe(turtle => {
      console.log(turtle);
    });
  }

}

 

1152615-20180514114700656-1231241339.png

继续抛出异常

import { Component, OnInit } from '@angular/core';
import { of } from 'rxjs/observable/of';
import { map, catchError, retry } from 'rxjs/operators';

@Component({
  selector: 'app-error',
  templateUrl: './error.component.html',
  styleUrls: ['./error.component.css']
})
export class ErrorComponent implements OnInit {

  constructor() { }

  ngOnInit() {
    of('Leo', 'Raph', 'Mikey', 'Don').pipe(
      map(turtle => {
        if (turtle === 'Mikey') {
          throw new Error('出错了');
        }
        return turtle;
      }),
      catchError(err => {
        throw new Error('继续抛出异常');
      })
    ).subscribe(turtle => {
      console.log(turtle);
    });
  }

}

1152615-20180514114853055-1618760254.png

重新尝试

import { Component, OnInit } from '@angular/core';
import { of } from 'rxjs/observable/of';
import { map, catchError, retry } from 'rxjs/operators';

@Component({
  selector: 'app-error',
  templateUrl: './error.component.html',
  styleUrls: ['./error.component.css']
})
export class ErrorComponent implements OnInit {

  constructor() { }

  ngOnInit() {
    of('Leo', 'Raph', 'Mikey', 'Don').pipe(
      map(turtle => {
        if (turtle === 'Mikey') {
          throw new Error('出错了');
        }
        return turtle;
      }),
      retry(2),
      catchError(err => of('Aioria', 'Mu'))
    ).subscribe(turtle => {
      console.log(turtle);
    });
  }

}

1152615-20180514115028428-1992782509.png

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值