美文网首页
Promise 小计

Promise 小计

作者: zh_19 | 来源:发表于2018-12-11 11:19 被阅读6次

Promise

Promise.prototype.catch()

如果Promise状态已经变成Resolved,再抛出错误是无效的。

var promise = new Promise(function(resolve, reject) {
  resolve('ok');
  throw new Error('test');
});
promise
  .then(function(value) { console.log(value) })
  .catch(function(error) { console.log(error) });
// ok

上面代码中,Promise在resolve语句后面,再抛出错误,不会被捕获,等于没有抛出。

Promise对象的错误具有冒泡性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个catch语句捕获。

getJSON("/post/1.json").then(function(post) {
  return getJSON(post.commentURL);
}).then(function(comments) {
  // some code
}).catch(function(error) {
  // 处理前面三个Promise产生的错误
});

上面代码中,一共有三个Promise对象:一个由getJSON产生,两个由then产生。它们之中任何一个抛出的错误,都会被最后一个catch捕获。

跟传统的try/catch代码块不同的是,如果没有使用catch方法指定错误处理的回调函数,Promise对象抛出的错误不会传递到外层代码,即不会有任何反应。

var someAsyncThing = function() {
  return new Promise(function(resolve, reject) {
    // 下面一行会报错,因为x没有声明
    resolve(x + 2);
  });
};

someAsyncThing().then(function() {
  console.log('everything is great');
});

上面代码中,someAsyncThing函数产生的Promise对象会报错,但是由于没有指定catch方法,这个错误不会被捕获,也不会传递到外层代码,导致运行后没有任何输出。注意,Chrome浏览器不遵守这条规定,它会抛出错误“ReferenceError: x is not defined”。

相关文章

  • Promise小计

    使用promise挺长时间了。但一直是拿过来就用,没有好好研究过。最近闲来无事,稍微研究下。promise 翻译过...

  • Promise 小计

    Promise Promise.prototype.catch() 如果Promise状态已经变成Resolved...

  • JS继承与Promise小计

    //ES6实现继承 classPerson { constructor(name, age) { this.nam...

  • 2019-07-31

    统计不是“小计”的个数。如果是小计就回“空”,不是小计就按顺序排列。image.png 如果是小计就回“空”,不是...

  • Promise原理及实现

    Promise标准 Promise 规范有很多,如Promise/A,Promise/B,Promise/D 以及...

  • promise相关

    promise promise.race promise.finally promise.catch

  • 2021-12-27Promise自身方法

    Promise.all()Promise.allSettled()Promise.any()Promise.rac...

  • Promise,async,await笔记

    Promise,async,await笔记 Promise 创建promise对象 Promise对象构造方法传入...

  • promise 和 deferred

    一 .promise ******** Promise.all([promise1,promise2,promis...

  • 手写Promise(简单)

    Promise Promise.all Promise.race

网友评论

      本文标题:Promise 小计

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