javascript - Promise.all 在一个异步函数中

标签 javascript ecmascript-6

<分区>

我有两个代码

1 个代码

async function foo() {
    const result1 = asyncFunc1();
    const result2 = asyncFunc2();
    return [result1, result2];
}

2 代码

async function foo() {
    const [result1, result2] = await Promise.all([
        asyncFunc1(),
        asyncFunc2(),
    ]);
return [result1,result2];
}

问题 两者有什么区别吗?

最佳答案

如评论所述,您没有等待第一个代码段中的函数调用,因此您将获得作为返回值的 promise 。但是,如果您使用 await,一个主要区别是在第一个代码段中,asyncFunc2 不会执行,直到 asyncFunc1 被解析(假设您使用等待)。然而,在第二个代码段中,asyncFunc2asyncFunc1 之后立即执行,无论它是否已解析。

Promise.all 将按照您传递函数的顺序返回结果。

请参阅 Promise.All 的文档和 Await

关于javascript - Promise.all 在一个异步函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57499259/

相关文章:

javascript - 如何从 Firebase Cloud Function 在 Google Pub/Sub 中发布消息?

javascript - 对象解构以构造新对象

javascript - 使用 async/await 动态生成 promise 链

javascript - 递归复制而不覆盖

javascript - 在批量插入期间有条件地抑制 SimpleSchema 的字段验证

javascript - jQuery Panzoom 包含 : 'invert' inside a container with a fixed width

javascript - Highcharts饼图如何减少由于绘图宽度造成的图表和图例之间的空间

javascript - Jest ES6 错误意外 token 导入?

javascript - Canvas 弧线绘制奇怪的形状 - CoffeeScript

php - 用户将超链接和图片粘贴到文本区域