为什么 Promise 会为嵌套 Promise 返回意外的输出?

问题描述 投票:0回答:1

我有下面的代码,基于 MDN 文档,我知道如何为

result
指定
state
promise
,由处理程序产生:

返回一个值:p 得到满足,返回值作为它的值 值。

不返回任何内容:p 得到满足,并以 undefined 作为其值 值。

抛出错误:p 被拒绝,并抛出错误作为其 值。

返回一个已经履行的承诺: p 得到履行 该承诺的价值就是它的价值。

返回一个已经被拒绝的 Promise:p 被拒绝,并以该 Promise 的 > 值作为其值。

返回另一个待处理的承诺:p 处于待处理状态并变为 立即履行/拒绝该承诺的价值作为其价值 在该承诺实现/拒绝之后。

那么为什么我的

state
promise
fullfilled

代码:

const test = Promise.reject(new Promise((resolve, reject) => {
throw new Error("error")
}))

const test2 = test.catch((result) => {
result.catch(() => {
    throw new Error("error2");
})
})

console.log(test2);

//result in console:
//[[Prototype]]: Promise
//[[PromiseState]]: "fulfilled"
//[[PromiseResult]]: undefined
javascript promise
1个回答
0
投票

你忘记回报内心的承诺:

const test = Promise.reject(new Promise((resolve, reject) => {
throw new Error("error")
}))

const test2 = test.catch((result) => {
  return result.catch(() => {
    throw new Error("error2");
})
})

console.log(test2);

© www.soinside.com 2019 - 2024. All rights reserved.