提问人:gus 提问时间:5/17/2023 最后编辑:gus 更新时间:5/17/2023 访问量:141
未解决的 promise - 开头返回的 then() 返回的 promise pending
Unresolved promise - Promise pending returned by then() at the beginning
问:
then()
:
返回值 立即返回新的 Promise。无论当前 promise 的状态如何,此新 promise 在返回时始终处于待处理状态。
catch()
:
返回值 返回新的 Promise。无论当前 promise 的状态如何,此新 promise 在返回时始终处于待处理状态。如果 onRejected 抛出错误或返回本身被拒绝的 Promise,则最终将被拒绝;否则,它最终会实现。
finally()
:
与 catch() 一样,finally() 在调用它的对象上内部调用 then 方法。如果 onFinally 不是一个函数,那么 () 与 onFinally 一起调用作为两个参数——对于 Promise.prototype.then(),这意味着没有附加任何有用的处理程序。否则,then() 使用两个内部创建的函数调用,其行为如下:
MDN 文档说,返回的 promise 在开始时始终处于待处理状态。then()
catch()
据我了解,这是因为这些方法本身是同步执行的,但它们的回调是异步执行的。 这样的回调对于知道 promise 是被解析还是被拒绝是必要的,并且由于这些回调是稍后执行的,因此通过这些方法返回的 promise 将处于未解析状态,因此在执行此类回调之前处于挂起状态。
https://tc39.es/ecma262/#sec-promise-objects
如果承诺已解决或已被“锁定”,则该承诺已解决 以匹配另一个承诺的状态。尝试解决或拒绝 已解决的承诺无效。如果承诺没有解决,则该承诺未解决 解决。未解决的 promise 始终处于待处理状态。一个 已解决的承诺可能处于待处理、履行或拒绝状态。
- 据我所知,它正确吗?
- 如果按照我的理解是正确的,那么是否同样适用?
finally()
- 和它们自己同步运行吗?
catch()
finally()
then()
我的 3 个问题只是为了了解待处理状态指的是什么。
答: 暂无答案
评论
.then
catch()
finally()
then()