【问题标题】:Javascript syntax using await Promise.all [closed]使用 await Promise.all 的 Javascript 语法 [关闭]
【发布时间】:2020-05-17 12:20:56
【问题描述】:

我正在尝试理解下面使用 await Promise.all 的代码/语法; 如何从端点响应中分配数组?

const getState = async (code) => {
    try {
      const [
        {data: dataResponse},
        {data: stateDistrictWiseResponse},
        {data: statesDailyResponse},
        {data: stateTestResponse},
        {data: sourcesResponse},
        {data: zonesResponse},
      ] = await Promise.all([
        axios.get('https://example.org/data.json'),
        axios.get('https://example.org/state_district_wise.json'),
        axios.get('https://example.org/states_daily.json'),
        axios.get('https://example.org/state_test_data.json'),
        axios.get('https://example.org/sources_list.json'),
        axios.get('https://example.org/zones.json'),
      ]);      
      console.log(stateTestResponse.states_tested_data);
    }
}

【问题讨论】:

  • 数组解构赋值
  • 你无法理解的究竟是什么?因为这里发生了很多事情。
  • 数组+对象解构
  • 我试图了解 JSON 最终是如何在该数组 const [] 中分配的,而不是试图了解 Promise.all

标签: javascript ecmascript-6 es6-promise


【解决方案1】:

Promise.all 将一组 promise 转换为一组结果。

axios.get 返回一个承诺,当它被解析时,返回一个形状为 { data: <result goes here> 的对象

您的代码正在解构返回数组中的那些对象。

【讨论】:

  • 非常感谢...我们已经很接近了。我想了解的是,一旦我们得到 { data: } 那么它究竟是如何分配给数组的......具体来说,如果你看下一行,就会有 console.log(stateTestResponse. states_tested_data)我对 stateTestResponse 如何获取值感到困惑,因为它位于 {data: stateTestResponse} 行的右侧
  • 这正是解构的工作原理。尝试查看 MDN 文档?
猜你喜欢
  • 2018-05-09
  • 2018-06-27
  • 2021-04-13
  • 2021-10-13
  • 1970-01-01
  • 2020-09-19
  • 2018-12-26
  • 1970-01-01
  • 2015-11-16
相关资源
最近更新 更多