对Promise的研究4

Posted zhouyideboke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对Promise的研究4相关的知识,希望对你有一定的参考价值。

Promise.reject()

Promise.reject(reason)方法也会返回一个新的 Promise 实例,该实例的状态为rejected

const p = Promise.reject(‘出错了‘);
// 等同于
const p = new Promise((resolve, reject) => reject(‘出错了‘))

p.then(null, function (s) {
  console.log(s)
});
// 出错了

上面代码生成一个 Promise 对象的实例p,状态为rejected,回调函数会立即执行。

注意,Promise.reject()方法的参数,会原封不动地作为reject的理由,变成后续方法的参数。这一点与Promise.resolve方法不一致。

const thenable = {
  then(resolve, reject) {
    reject(‘出错了‘);
  }
};

Promise.reject(thenable)
.catch(e => {
  console.log(e === thenable)
})
// true

上面代码中,Promise.reject方法的参数是一个thenable对象,执行以后,后面catch方法的参数不是reject抛出的“出错了”这个字符串,而是thenable对象。

以上是关于对Promise的研究4的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段12——JavaScript的Promise对象

对Promise的研究3

前端面试题之手写promise

关于多个Promise对象及then()函数的执行顺序的研究记录

什么时候然后从Promise.all()的子句运行?

Promise