美文网首页让前端飞程序员
Promise统一异常处理

Promise统一异常处理

作者: 大神带我来搬砖 | 来源:发表于2018-12-29 16:40 被阅读21次

现在前端和后端的交互过程中,很多时候都使用fetch和promise。
例如一个简化版本的从后台取得数据的方法如下

function getData(url) {
  return fetch(url).then(response => {
    if (response.ok) {
      return response;
    } else {
      throw new Error('error');
    }
  });
}

然后在其他地方调用即可


getData('projects').then(data => {
  console.log(data);
});

getData('users').then(data => {
  console.log(data);
});

但是上面没有对异常进行处理,为了进行方便的统一异常处理,可以修改返回的promise对象的then方法,自动将统一的错误处理handler加入。

function onError() {
  console.log('global error handler');
}

function getData(url) {
  const promise = fetch(url).then(response => {
    if (response.ok) {
      return response;
    } else {
      throw new Error('error');
    }
  });
  promise.oldThen = promise.then;
  promise.then = (onFulfilled, onRejected) => {
    return promise.oldThen(onFulfilled, onRejected || onError);
  };

  return promise;
}

调用的时候可以选择自定义的handler还是使用默认的

getData('projects').then(data => {
  console.log('use data' + data);
});

getData('roles').then(data => {
  console.log('use data' + data);
});

getData('users').then(data => {
  console.log('use data' + data);
}, () => {
  console.log('do my self');
});

相关文章

  • Promise统一异常处理

    现在前端和后端的交互过程中,很多时候都使用fetch和promise。例如一个简化版本的从后台取得数据的方法如下 ...

  • spring/springmvc 全局异常处理

    1.在项目中为什么要统一异常处理 当异常返回到前端页面的时候可以统一处理,避免前端无法处理异常 不做统一异常处理,...

  • 统一异常处理

    一、什么是统一异常处理 1、制造异常 2、什么是统一异常处理我们想让异常结果也显示为统一的返回结果对象,并且统一处...

  • springboot全局异常处理

    一、单个controller范围的异常处理/** 统一异常处理 @return*/@RequestMapping(...

  • springboot之统一异常处理

    spring统一异常处理 使用spring的统一异常处理,我们就不再需要在业务代码中就行显式的捕获异常处理,在da...

  • 统一异常处理

    1.定义返回结果对象 2.定义返回结果工具类, 3.枚举消息状态 .4.自定义异常类 5.统一异常拦截 6.业务中...

  • 统一异常处理

    首先,利用枚举,来定义异常类型。定义枚举ResultEnum: 自定义异常,新建CustomException类:...

  • 统一异常处理

    简要描述: 在web层controller业务代码中,一般不要处理任何异常,将异常完全跑出,由ExceptionH...

  • 统一异常处理

    Overview 利用Spring AOP思想,对项目中的异常进行统一处理。 实现思路 通过@Controller...

  • #JS#Promise速查

    基础写法 如果只想对异常处理,可以采用 promise.then( undefined, onRejected )...

网友评论

    本文标题:Promise统一异常处理

    本文链接:https://www.haomeiwen.com/subject/uhrplqtx.html