码迷,mamicode.com
首页 > 其他好文 > 详细

重读es6, 正确了解promise中catch的用法

时间:2019-07-27 12:54:41      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:介绍   cte   回调函数   undefined   fine   防止   err   fill   输出   

前言

在最近的项目中,用到了es6的promise语法,发现promise.prototype.catch 并不只是单单reject抛出的回调函数,所以今天做一些笔录,防止以后在项目中又碰到这样的问题。

先介绍一下promise.prototype.catch

Promise.prototype.catch 方法是 .then(null, rejection) 或是 .then(undefined, rejection)的别名,用于指定发生错误时的回调函数。

如果Promise 对象状态变为resolved,则会调用then方法指定的回调函数;如果异步操作抛出错误,状态就会变为rejected,就会调用catch方法指定的回调函数,处理这个错误。另外,then方法指定的回调函数,如果运行中抛出错误,也会被catch方法捕获。

下面是摘抄阮一峰的es6入门的

p.then((val) => console.log(‘fulfilled:‘, val))
  .catch((err) => console.log(‘rejected‘, err));

// 等同于
p.then((val) => console.log(‘fulfilled:‘, val))
  .then(null, (err) => console.log("rejected:", err));

下面是我自己写的例子

const testPromise = new Promise(function (resolve, reject) {
    let a = 5
    if (a === 5) {
      resolve(‘success‘)
    } else {
      reject(‘catch error‘)
    }
  })
  testPromise.then(res => {
    throw new Error(‘then error‘)
  }).catch(err => {
    console.log(‘catch error‘)
    console.log(err)
  })

这个例子最终会先输出catch error,然后再抛出错误信息。

总结

then中抛出错误,就会调用promise.prototype.catch的回调函数。

重读es6, 正确了解promise中catch的用法

标签:介绍   cte   回调函数   undefined   fine   防止   err   fill   输出   

原文地址:https://www.cnblogs.com/andrewkz/p/11254555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!