- 承诺的文档状态
.catch()
返回一个承诺。这是否意味着如果您在代码中返回一个 Promise,它将被包装在 .catch 的另一个 Promise 中?
IE
const x = Promise.reject().catch(() => Promise.resolve("test"));
上述以“test”值解析的承诺是否会被包装在 .catch 的另一个承诺中?据我了解,这就是异步函数中发生的情况;他们将任何结果都包装在“幕后”的承诺中。这可能导致双重承诺,这是否也发生在这里?
- 如果将上面变量 x 中的承诺放入现有数组并传递给
Promise.all()
,那么什么会构成被解析?在 Promise.all 解决之前,catch 块和内部函数是否必须完成?如果是这样,为什么会这样?为什么 Promise.all 不会在第一个 Promise.reject() 执行后立即解决?它怎么知道等待?