Promise.all:解析值的顺序
在 JavaScript 中,Promise.all 旨在通过允许解析来增强 Promise 的功能同时执行多个承诺。 Promise.all 的一个关键方面是将解析值传递给其回调的顺序。
根据 MDN 文档,解析值的顺序应与输入数组中 Promise 的顺序相对应。这意味着第一个要解析的 Promise 的值将首先放置在传递给 then() 回调的结果数组中。
为了确认这一点,让我们深入研究 JavaScript Promise 规范。在“Promise.all(可迭代)”部分中,我们找到了将可迭代的 Promise 解析为单个 Promise 的步骤。关键细节在于步骤 4e,其中涉及为每个已解决的 Promise 创建一个内部 [[Index]] 槽。该槽显式标记了原始输入数组中 Promise 的索引。
因此,Promise.all 实现确保在同时解析多个 Promise 时,输出严格根据输入中 Promise 的顺序排序大批。只要输入数组保持一致的排序(例如数组),这种顺序保留就成立。
为了说明这一点,请考虑以下代码:
<code class="js">const somePromises = [1, 2, 3, 4, 5].map(Promise.resolve); Promise.all(somePromises).then(function(results) { console.log(results); // Expected result: [1, 2, 3, 4, 5] });</code>
当此代码时执行后,解析的值将按照 somePromises 数组中的 Promise 的顺序记录到控制台。这演示了 Promise.all 的订单保存功能。
以上是`Promise.all` 是否保留解析值的顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!