在这段代码中,变量p3是一个Promise对象。Promise.resolve()方法会返回一个已经resolved的Promise对象,该对象的状态是fulfilled。 而在这个Promise对象上调用then方法时,传入了一个匿名函数,这个函数里面会直接抛出一个Error异常,所以这个Promise对象的状态就会变成rejected. 所以这段代码中打印出来的p3的状态是rejected。为什么p3的状态从pending变为fulfilled后还可以从fulfilled变为rejected
时间: 2023-02-08 14:53:19 浏览: 154
看了就懂的Promise和回调函数
在 JavaScript 中,Promise 是一种用来管理异步操作状态的对象。在这段代码中,变量 p3 是一个 Promise 对象。使用 `Promise.resolve()` 方法会返回一个已经 resolve 的 Promise 对象,这个对象的状态为 fulfilled。
当在这个已经 fulfilled 的 Promise 对象上调用 then 方法时,传入了一个匿名函数,这个函数里面会直接抛出一个 Error 异常,所以这个 Promise 对象的状态就会变成 rejected。所以这段代码中打印出来的 p3 的状态是 rejected。
Promise 对象的状态是不可逆的,一旦状态变为 fulfilled 或 rejected,就不能再次改变了。但是,在这种情况中,Promise.resolve()返回的Promise对象,已经 resolved 后直接变成 rejected 是因为then方法中的函数导致的,这个函数并没有改变Promise对象的状态,而是在等待状态改变后进行了错误处理,所以会被判断为rejected.
阅读全文