返回介绍

JavaScript 异常和 Promise

发布于 2025-04-26 18:09:29 字数 835 浏览 0 评论 0 收藏

Promise 的 reject 回调大多数是在 Promise.reject() 时触发的,但是当构造器回调函数中发生错误时,也会隐性地被触发:

var jsonPromise = new Promise(function(resolve, reject) {
  // 当

 JSON.parse 接收到非法

 JSON 格式数据时,会抛出错误


  // 这会隐性地触发否定回调


  resolve(JSON.parse("This ain't JSON"));
});

jsonPromise.then(function(data) {
  // 这里永远不会被执行


  console.log("It worked! ", data);
}).catch(function(err) {
  // 这里是真正执行的代码


  console.log("It failed! ", err);
});

这就说明,你可以把所有跟 Promise 相关的逻辑都写到构造器的回调函数中,这样任何错误都会被自动捕获并触发 Promise 的否定回调。

“then”方法的回调函数中抛出错误时,同上面的情形类似:

get('/').then(JSON.parse).then(function() {
  // 这里不会被执行,因为

’/' 是一个

 HTML 页面,不是

 JSON 格式


  // 所以

 JSON.parse 在这里会抛出错误


  console.log("It worked! ", data);
}).catch(function(err) {
  // 这里是真正执行的代码


  console.log("It failed! ", err);
});

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。