gpt4 book ai didi

javascript - javascript promise 的正确术语是什么

转载 作者:行者123 更新时间:2023-12-03 13:40:01 25 4
gpt4 key购买 nike

我对周围出现的不同术语感到困惑。据我了解,promise 可以是:

fulfilled
rejected
pending
settled
resolved
defer

解决的意思是解决了吗?或者这是否意味着它已经完成?什么是延迟?

最佳答案

术语可能很难。
让我们从 Promises/A+ specificationrespective ES6 section有3个状态:

  • 待定 - promise 还没有取值,它的 future 还不确定。
  • 已完成 - promise 成功地得到了一个结果值“赋值”
  • 拒绝 - promise 给出了无法获得结果的原因,通常是错误。

  • 期限 入驻是满足和拒绝的同义词,意思是两者之一 - 与未决相反。

    动态动词 履行拒绝描述将状态从挂起更改为已完成或已拒绝。这些转换称为 履行拒绝的 promise 。

    那些很容易。现在, 解决 是另一种野兽。它有时被用作“履行”的同义词,但最好将其理解为将 promise 的命运确定为履行或拒绝。 分辨率 promise 的(很少:结算)意味着它离开了未决状态。但即使这样也不准确 - 问题在于 Promise Resolution Procedure 的递归性质:
  • 用“普通”值解决一个 promise 意味着履行它
  • 用一个 Promise(或 thenable)解决一个 Promise 意味着采用它的状态:
  • 用已履行的 promise 解决是一种履行
  • 用被拒绝的 promise 解决是拒绝
  • 解决一个未决的 promise 意味着等待它的决议

  • 是的,如果一个 promise 得到解决,它甚至可能不知道它是会被履行还是被拒绝。但这意味着命运是 不再不确定 ,因为它绑定(bind)到我们解决的 promise (请注意,您只能解决一次 promise )。

    忽略这种特殊情况, 已解决 promise 通常意味着一个确定的 promise 。


    或者,引用 ECMAScript 6 Specification :

    A promise is resolved if it is settled or if it has been “locked in” to match the state of another promise. Attempting to resolve or reject a resolved promise has no effect. A promise is unresolved if it is not resolved. An unresolved promise is always in the pending state. A resolved promise may be pending, fulfilled or rejected.



    and what the heck is defer?



    推迟 结果意味着您为结果返回(异步) promise ,而不是直接(同步)返回结果。并返回延迟拒绝 instead of throwing synchronously .

    请注意,“ defer ”在某些库( Q )中也被用作构造 Deferred 的方法名称。对象 - 见 this answer on The differences between Deferred, Promise and Future一个很好的解释。
    哦,永远不要相信变量名: defer也可能是缩写的“deferredObject”。

    关于javascript - javascript promise 的正确术语是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29268569/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com