Promise.all:解析值的顺序

2024-04-22

看着MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all它看起来像values传递给then()Promise.all 的回调包含按照 Promise 顺序排列的值。例如:

var somePromises = [1, 2, 3, 4, 5].map(Promise.resolve);
return Promise.all(somePromises).then(function(results) {
  console.log(results) //  is [1, 2, 3, 4, 5] the guaranteed result?
});

任何人都可以引用说明顺序的规范values应该在?

PS:运行这样的代码表明这似乎是正确的,尽管这当然没有证据 - 这可能是巧合。


不久,订单被保留 https://www.karltarvas.com/2015/01/21/order-of-resolved-values-in-promise-all.html.

按照您链接到的规范,Promise.all(iterable) https://tc39.es/ecma262/#sec-promise.all需要一个iterable https://tc39.es/ecma262/#sec-iterator-interface作为参数并内部调用PerformPromiseAll(iterator, constructor, resultCapability) https://tc39.es/ecma262/#sec-performpromiseall与它一起,后者循环iterable using IteratorStep(iterator) https://tc39.es/ecma262/#sec-iteratorstep.

解决是通过实现Promise.all() Resolve https://tc39.es/ecma262/#sec-promise.all-resolve-element-functions每个已解决的承诺都有一个内部[[Index]]slot,它标记原始输入中promise的索引。


所有这些意味着输出是严格排序的,因为您传递给 Promise.all() 的可迭代对象是严格排序的(例如,数组)。

您可以在下面的小提琴(ES6)中看到它的实际效果:

// Used to display results
const write = msg => {
  document.body.appendChild(document.createElement('div')).innerHTML = msg;
};

// Different speed async operations
const slow = new Promise(resolve => {
  setTimeout(resolve, 200, 'slow');
});
const instant = 'instant';
const quick = new Promise(resolve => {
  setTimeout(resolve, 50, 'quick');
});

// The order is preserved regardless of what resolved first
Promise.all([slow, instant, quick]).then(responses => {
  responses.map(response => write(response));
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Promise.all:解析值的顺序 的相关文章

  • readFile() 和 readFileSync() 之间的区别

    以下代码将index html 的内容 仅包含文本hello world 输出到浏览器 然而 当我更换readFile with readFileSync 请求超时 我缺少什么 是否需要不同类型的缓冲区 我使用的是node 0 61 和ex
  • 如何使用 javascript 选择页面上的任意文本?

    假设我有一个 contentEditablediv 用户可以编辑和更改其中的文本和元素 我如何任意更改此选择div用JavaScript 我所说的 更改 并不是指 更改用户选择的内容 我的意思是实际上更改what被选中 然后 用户应该能够在
  • 使用 JavaScript 将数字缩写(5.2k、1.7m 等)转换为有效整数

    我有一个 Google 文档 其中有一列包含用 速记 编写的各种数字 例如 5k for 5 000 86 62k for 86 620 4 1m for 4 100 000 1 2b for 1 200 000 000 我想使用 Java
  • 在 IOS9 中的 Cordova 应用程序上使用 JQuery/Javascript 的 window.history 问题

    我在 IOS9 测试版 下使用 Cordova 应用程序时遇到问题 我正在使用最新的 Cordova 和 JQuery 移动版本 window history 未更新 导致以下故障 window history go 1 无法返回页面 即使
  • Javascript RegEx 替换所有不在 HTML 标签内的字符

    寻求一些帮助 我的正则表达式有点生锈 我试图用一个字符替换 javascript 中 HTML 标签之外的所有字符 例如 用破折号 替换这些字符 div class test Lorem Ipsum br Dolor Sit Amet di
  • 现在 JavaScript 的无限循环会导致浏览器崩溃吗?

    我正在学习 JavaScript 对编程很陌生 碰巧遇到了这些无限循环 据说这些循环会永远持续下去并使浏览器崩溃 但是当我用这些代码创建一个循环时 i 0 while i lt 10 document write i 浏览器只是继续加载它
  • 如何在前端和后端之间共享javascript代码(ES6)

    这是 ES6 特定的副本这个所以线程 https stackoverflow com questions 3225251 how can i share code between node js and the browser 其中详细介绍
  • 如何字符串化整个 Javascript 对象(包括 __proto__ 属性)?

    如果这是重复的 我很抱歉 到目前为止我找不到相同的问题 我的对象中有一个具有各种方法的对象 proto 成员 我们称这个对象的类型为myObjectType 稍后我必须做一个JSON stringify myObjectType 问题是 当
  • PHP 中的 Javascript“unes​​cape”

    我的图像主机有一个 Google Chrome 扩展程序 它会向我的网站发送一个 URL 该网址得到encoded通过 JavaScript 的escape method 编码的 URLescape看起来像这样 http 253A 4 bp
  • 在高图表中突出显示一系列条形图中的一个条形图?

    我有一个图表 显示堆叠和分组的条形图 类似于这个演示 http www highcharts com demo column stacked and grouped 有没有办法从 JavaScript 代码中使系列之一中的其中一个栏突出显示
  • 如何从 angularJS 模板调用encodeURIComponent?

    我的 Angular JS 模板中有一个块 a href foos foo id foo name a 但是 foo id 属性有时可能包含时髦字符 我想做这样的事情 a href foos encodeURIComponent foo i
  • 创建地图后向 Google 地图 v3 添加标记

    我对使用 Google Maps API 比较陌生 现在我正在开发一个项目 用户可以选择各种搜索过滤器并查看结果自动显示在地图上 而无需重新加载页面 到目前为止 我的方法是创建一个控制地图的 Javascript 对象 以便我可以按照我的意
  • 通过 JavaScript 获取页面/iframe 的编码

    我想通过 JavaScript 或浏览器中的其他一些 API 以编程方式确定页面的编码 我想要这些信息的原因是因为我试图对主要浏览器支持的字符编码进行模糊测试 显然仅仅因为我发送了适当的 内容类型 并不意味着浏览器会使用编码做正确的事情 欢
  • 散景服务器获取鼠标位置

    我正在开发一个带有散景 0 12 2 的交互式应用程序 它根据特定的交互更新绘图 现在 我使用滑块来更改图中字形的位置 但实际上我想访问鼠标在特定图中的位置 数据集是一个多维矩阵 张量 密集数据 每个图在特定位置显示一个维度 如果我更改一个
  • 获取 Html.TextBoxFor 字段的 HTML id

    有没有办法在 Javascript 中获取 ASP NET MVC 控件生成的客户端 ID Html TextBoxFor m gt m Name 像这样 Html IdFor m gt m Name
  • 现已弃用使用 Google Places API 获取多种类型

    谷歌最近宣布 自 2016 年 2 月 16 日起 types 参数已被弃用 取而代之的是新的类型参数 每个搜索请求仅支持一种类型 我的问题是 现在有什么方法 不使用已弃用的参数 从单个 API 调用中获取多个地点类型吗 谢谢 None
  • Firefox 扩展中的 localStorage

    我正在尝试从 Firefox 扩展访问页面的 localStorage 我的理解是content给出了参考window当前页面的 当我尝试访问页面的 localStorage 时content localStorage 我想我正在得到它的参
  • Firebase Storage put() 方法上传数字数组而不是字符串

    我想将字符串上传到 Firebase 存储文件 我尝试过 let myString storage ref path child file txt putString myString raw and with let myString s
  • .js.erb VS .js

    将 Rails 应用程序的 javascript 放入 js erb 文件而不只是将其放入 application js 文件有什么好处 我有一个企业创建按钮 因此我应该将代码放入 create js erb 文件中 还是使用以下方法将其放
  • Sencha-touch :保存登录名/密码(保存会话,多任务)

    我有一个 Java Web 应用程序 其中移动部分是用 Sencha touch 开发的 当我启动 sencha touch 应用程序时 她询问我的登录名 密码 因为该应用程序的访问受到限制 但是我想保存用户的登录名 密码 sencha t

随机推荐

  • Oracle 内联视图

    为什么使用内联视图 使用内联视图有许多不同的原因 有些事情没有内联视图就无法完成 例如 1 对解析函数的结果进行过滤 select ename from select ename rank over order by sal desc rn
  • 检查我的 SSRS 报告,代码中是否为空

    我正在加载我使用 SSRS 通过代码 C 完成的报告 但我需要检查报告是否为空 我怎样才能得到它 我使用的代码是 if string IsNullOrEmpty RptInstance FileName string ReportName
  • Javascript 将 URL 转换为 BASE64 图像

    我正在构建一个 Ionic2 应用程序 我正在尝试将图像 url 转换为 base64 图像 我已经发现this https stackoverflow com questions 22172604 convert image url to
  • iTextSharp 可以将 PDF 文档转换为 PDF/A

    我无法在常见问题解答中找到此功能是否存在于 API 中 尽管在一本书中提到它是可能可用的 有人有实施此功能的经验吗 On 这个线程 http old nabble com Added support for PDF A 1 td109714
  • 在 SQL Server 中的韩语单词(任何 Unicode 单词)中查找韩语字母表(任何 Unicode 字符)的索引

    我需要按姓名搜索人员 这里的人名可以是英文 韩文或中文 为此我使用了Like搜索条件Name如下 select from MyTable where Name like N t 上述声明是给所有包含字母的用户t 但这不适用于韩语或中文 就像
  • chrome扩展后台页面中的jQuery使用

    Goal 我正在尝试使用此样板代码使用在线词典 API 进行查找 以查找所选单词并返回定义 Problem 我已经单独测试了实际的 jQuery ajax 调用 效果很好 另外 我可以在页面上获取所选的单词 然而 由于某种原因 我实际上遇到
  • 从无符号除法结果分配时有关符号转换的警告

    我编译了以下代码 Wsign conversion int main unsigned int a 8 int b a 8u warning implicit conversion changes signedness unsigned i
  • 如何防止“CoreData无法完成故障”?

    我们偶尔会收到 CoreData 无法完成故障 的信息 我们已阅读 Apple 文档 但不清楚允许保留哪些内容 我们非常小心地为每个线程创建一个上下文等 但是 我们的应用程序正在做的一件事是我们在 UIViewController 上保留
  • PHP 空 $_POST

    我通过 HTTP POST 向 PHP 发送数据 这对于短于 8MB 8192KB 的数据来说效果很好 但是当发送的数据量更大时 PHP 会显示 POST变量为空 我强调的是 POST变量甚至不包含帖子字段的名称 它作为空数组存在 临界点似
  • Python RuntimeError:字典在迭代期间更改了大小[重复]

    这个问题在这里已经有答案了 我正在练习一个非常简单的Python代码 我试图找到它的解决方案 但找不到 def del contacts for name number in d1 items if del name name del d1
  • 查找两个数组中的重复值,Python

    我有两个数组 A 和 B 每个数组约有 50 000 个值 每个值代表一个 ID 我想创建一个包含三列的 pandas 数据框 col1 数组 A 中的值 col2 数组 B 中的值 col3 带有标签 唯一 或 重复 的字符串 在每个数组
  • Process.Start 返回 null 时查找进程 ID?

    如果我尝试通过调用打开图像文件 视频或网站Process Start filepath 直接 那么它通常会成功 但是 Process Start 的返回值有时将为 null 正如这里所讨论的 https stackoverflow com
  • 将硬编码文件路径更改为 VBA 中提示的用户?

    现在 我有一个用于 Word 的 VBA 宏 它可以解析文档中的某种字体 并将所选类型的所有字体输出到文本文件 我打开文本文件的硬编码行是这样的 Open C Documents and Settings Output txt For Ou
  • 实现共享功能的标准方法

    我需要在 iOS 中实现 共享为 功能 例如 一个按钮名为 共享为 并弹出一个对话框 其中包括电子邮件 短信 Facebook Twitter 等项目 我想知道是否有一个标准对话框可以完成这项工作 经过搜索 我发现在 iOS6 中使用 UI
  • 如何使用 C 客户端通过 ActiveMQ 启用 SSL

    我已经配置了 ActiveMQ http activemq apache org http activemq apache org 通过以下方式使用 ssl 上下文RedHat 的 SSL TLS 教程 https access redha
  • HTML 树全宽悬停效果

    我有一个 html 树 主要由嵌套的无序列表组成 我需要为每个叶子创建全宽悬停效果 类似于 Windows 文件菜单树悬停效果 悬停效果是 div div 具有背景颜色和边框 我做了一个模拟全宽度的黑客 但侧面边框不再可见 我可以使用 CS
  • C++/CLI:CA2123:需要 SecurityCriticalAttribute?

    我对这样的错误有点迷失 警告 7 CA2123 Microsoft Security 添加以下安全属性 到 RithmicConnector 连接 字符串 为了匹配基地的 LinkDemand 方法 IConnector Connect S
  • 如何向 Monaco 编辑器添加新的语言语法?

    我添加了我的语言并按照此处的说明进行构建https github com Microsoft monaco languages https github com Microsoft monaco languages npm run prep
  • 选择日期最高的行

    我的表中有一些重复的值 我只想选择那些具有最新 最高日期的值 即 ID Type Name Value Date 1 FRUIT APPLE Imported 2011 03 19 22 08 13 5 FRUIT LEMON Import
  • Promise.all:解析值的顺序

    看着MDN https developer mozilla org en US docs Web JavaScript Reference Global Objects Promise all它看起来像values传递给then Promi