https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then#description

Thenable objects that arise along the 100 chain are always resolved -onFulfilled处理程序从不接收thable对象,以及任何 由任一处理程序返回的ThEnable始终在 传递给下一个处理程序.这是因为在构建新的 promise ,executor传递的resolvereject函数是 保存,并在当前promise 结算时,相应的函数 将使用实现值或拒绝原因调用.这个 解析逻辑来自 > Promise()构造函数.

根据我的理解,promise 并不总是能解决的.

这个文档是什么意思,有错误吗?

推荐答案

这确实相当令人困惑.首先,在promise terminology中,"已解决"状态并不等同于"已履行"--已解决的promise 可以用一个值来解决,这样它最终就会拒绝.然而,我不认为这句话是什么

沿着then()链出现的可见对象总是被解析

甚至指的是."待解析"并不意味着启用对象的状态,这通常不为人所知.Promise确实有定义良好的状态,规范描述了Promise对象如何在这些状态之间转换.另一方面,除了他们的.then()方法之外,Thenable objects没有任何特点,.then()方法通过两个回调调用,可以做它想做的任何事情.因此,除非是promise ,否则使能对象没有区分未决、已实现和已拒绝的状态,我们也不会谈论它"正在被解析".

那么,这句话还意味着什么呢?我不知道作者的意图,但我可以猜到:

  • 这可能意味着沿着链条出现的任何可用对象都是used as the argument to resolve a promise.这有点草率,因为这是promise ,是resolve()d with,而不是Thable对象.不过,拨打Promise.resolve(thenable)可能会被简化为"解决问题".
  • 这可能意味着result is extracted号.这里,动词"Resolve"的用法不是特定于它的Java脚本,而是在一般意义上--就像在"解方程"或"解析域名"中一样.不仅提供者resolve()a Promise witha值,而且消费者正在解析promise to a值.这可能需要多个步骤,但最终我们将获得最终的结果值(或拒绝)-不是作为函数调用的返回值,而是作为连续传递样式的回调参数,但仍然是这样.在这个相同的意义上,我们可以将一个使能对象赋给它的结果值,而解析值就是链接的promise 得到解决的值.

Javascript相关问答推荐

无法通过从我的 node 后台创建的预签名URL将PDF上传到S3桶

在TypScript中计算使用旋转谷仓的鸡舍所需的农场数量

在类型脚本中使用浏览器特定属性的正确方法是什么?

如何使用JavaScript对切换的声音设置音量

使用NgDeliverentOutlet和动态内容投影的Angular 渲染组件

为什么我的第二个OnClick Isloading值在TEK查询Mutations 查询中不起作用?

TypScript界面中的Infer React子props

GrapeJS -如何保存和加载自定义页面

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

Angular 订阅部分相互依赖并返回数组多个异步Http调用

ChartJs未呈现

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

将对象推送到数组会导致复制

如果一个字符串前面有点、空格或无字符串,后面有空格、连字符或无字符串,则匹配正则表达式

使用自动识别发出信号(&Q)

如何为仅有数据可用的点显示X轴标签?

如何在一个对象Java脚本中获取不同键的重复值?

Node.js错误: node 不可单击或不是元素

如何在脚本编译后直接将RxJ模块导入浏览器(无需Angel、webpack、LiteServer)

有没有办法通过使用不同数组中的值进行排序