gpt4 book ai didi

javascript - 关于 Promises/A+ 规范,术语 "thenable"和 "promise"有什么区别?

转载 作者:行者123 更新时间:2023-12-01 11:31:29 26 4
gpt4 key购买 nike

我正在查看“Promises/A+”规范,但无法理解以下内容:

关于第 1 节。术语,

1.1。 "promise”是具有 then 方法的对象或函数,其行为符合本规范。

1.2. “thenable”是定义 then 方法的对象或函数。

那么"thenable"这两个术语有什么区别?和 "promise" ?

同样在第 2.3 节中。 promise 解决程序,

Promise 解析过程是一个抽象操作,将 Promise 和 value 作为输入,我们将其表示为 [[Resolve]](promise, x) .

所以我的问题是:

为什么它在 2 个左括号和右括号内表示?有什么约定吗?

非常感谢。

最佳答案

So What is the difference between the terms "thenable" and "promise"?



我认为您已经引用的部分确实很好地回答了这个问题:
  • thenable 是一个带有 then 的对象。方法。任何物体。
  • Promise 是一个带有 then 的对象。方法(即 thenable)符合规范 .

  • 到目前为止这么简单。我认为您的实际问题是:“为什么要区分它们?”

    问题在于,通过查看一个对象,您无法确定它是否是一个 promise 。
    您可能会说这是一个 promise ,因为您可以看到它的 then方法由您自己或您信任的人实现 - 通常是您选择的 promise 库。您将能够“看到”这一点,因为该对象确实从您的 Promise 原型(prototype)继承,或者您甚至可以比较该方法与您定义的函数(引用地)相同。或任何其他对您来说足够的检查方法。
    你可能会说这不是一个 promise ,因为它没有 then方法。
    但是你如何处理实现 then 的对象? ,但不知道是一个 promise ?这是一个thenable,将被处理。

    Promises/A+ 规范旨在实现 promise 实现之间的互操作性,并使用 .then() 的存在。 duck typing的方法| .它确实指定了如何处理此类 thenables(可能是 promise 或至少具有类似行为)的精确算法,以便您可以从它们创建实际的、受信任的(“已知”) promise 。

    Why is it denoted within 2 opening and closing brackets? Is there any convention?



    是的,ECMAScript 规范将此语法用于 internal methods and properties :

    The names of internal properties are enclosed in double square brackets [[ ]].



    这些属性实际上并不需要存在,它们纯粹用于描述应该发生的事情 - 实现必须像使用它们一样行事。不过,它们是完全抽象的操作。

    关于javascript - 关于 Promises/A+ 规范,术语 "thenable"和 "promise"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29435262/

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