ES6 Promise catch与Java catch对比

导读:本篇文章讲解 ES6 Promise catch与Java catch对比,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

对比学习法是一种不错的总结、提高技巧。有过Java开发经验的人,在学习ES6 Promise catch用法时,总会不由自主地产生交叉联想。本文通过对比,加强读者对后者的理解。

1、
Java catch:是一种语法定义,用于捕获各种异常和错误。
Promise catch:是Promise的原型方法之一,返回一个新的Promise对象,用于处理上游传下来的失败和错误。

2、

Java catch:就像筛砂子、石块,某个粒径的砂子总能,且只能被某个孔径的筛子阻挡。
Promise catch:就像雁过拔毛。上游产生的失败和错误,经过某级catch后,就变成了“成功”。另外,catch可以“捣乱”,自己产生一个失败和错误,向下游传递。

var p1 = new Promise(function(resolve, reject) {
  reject('某种失败');
});

p1.catch(function(e) {
  console.log(e); // 捕获上游产生的失败和错误
}).then(function(){
  console.log('经过上面的catch捕获,浪子回头变成功');
}, function () {
  console.log('不会被触发');
});

// 控制台可见:
// 某种失败
// 经过上面的catch捕获,浪子回头变成功

3、在异步函数中抛出的错误不会被catch捕获到

var p2 = new Promise(function(resolve, reject) {
  setTimeout(function() {
    throw '异步函数中抛出的错误';
  }, 1000);
});

p2.catch(function(e) {
  console.log('不会执行' + e); // 不会执行
});

4、在resolve()后面抛出的错误会被忽略

var p3 = new Promise(function(resolve, reject) {
  resolve();
  throw 'Silenced Exception!';
});

p3.catch(function(e) {
   console.log('不会执行' + e); // 不会执行
});

参考资料:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/17320.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!