第1节术语,
1.1. “promise”是一个对象或函数,其方法的行为符合本规范.
1.2. “thenable”是定义then方法的对象或函数.
那么术语“可以”和“承诺”有什么区别呢?
也在2.3节.承诺解决程序,
承诺解决程序是一个抽象的操作,作为输入的承诺和价值,我们表示为[[解决]](promise,x).
所以我的问题是:
为什么在2个开闭括号内表示?有什么约定吗
非常感谢你.
解决方法
So What is the difference between the terms “thenable” and “promise”?
我认为你已经引用的部分答案很好:
> a thenable是一个具有then方法的对象.任何对象.
>承诺是一种符合规范的方法(即可以)的对象.
到目前为止这么简单我认为你的实际问题是:“他们为什么要区别?
问题是通过查看一个对象,你无法决定是否是一个承诺.
你可能可以说这是一个承诺,因为你可以看到它的方法是由你自己或你信任的人实现的 – 通常你选择的诺基亚图书馆.您将能够“看到”,因为该对象确实从您的承诺原型中继承,或者甚至可以比较与所定义的函数相同的方法.或任何其他检查方法足够你.
你可能可以说这不是一个承诺,因为它没有那个方法.
但是对于那个实现的对象,你做什么呢,但不知道是一个诺言呢?这是一个可以的,将被处理这样.
Promises / A规范旨在实现承诺之间的互操作性,并使用duck typing的.then()方法的存在.它确定了如何处理这种可能性(可能是承诺或至少具有类似行为)的精确算法,以便您可以从中创建一个实际的,受信任的(“已知”)承诺.
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 [[ ]].
这些属性实际上并不需要存在,它们纯粹用于描述应该发生什么 – 实现必须像使用它们一样行事.他们是完全抽象的操作.