【问题标题】:Add values from promise.all to array将 promise.all 中的值添加到数组
【发布时间】:2021-01-19 00:53:31
【问题描述】:

我正在使用 Promise.all 调用多个 api 调用并且能够接收它们的响应,但我想将它们添加到数组中

我的代码

async function asynchUploadGrpFiles(files) {
  var responseDetails = [];

  await Promise.all([get('https://httpbin.org/get?a=1'),
    get('https://httpbin.org/get?b=2'),
    get('https://httpbin.org/get?c=3')
  ]).then(values => {

    responseDetails.push(":::: time :::" + values);

    console.log(values);
  });

  console.log(responseDetails.toString());
}

我能够记录来自console.log(values); 的响应,但这些没有被推送到responseDetails

【问题讨论】:

  • 你为什么用async/await
  • @Andreas 我希望这个函数被异步调用
  • 为什么异步调用不返回任何有用的东西?
  • @Andreas 你在这里没有帮助。 OP 似乎在 async/awaitthen 语法之间感到困惑。正如他所提到的,我相信他能够异步获得响应。你能证明关闭是合理的吗?
  • @SaurabhJhunjhunwala 你在说什么场景?响应硬编码在哪里?它应该取决于什么?真的不清楚你想在这里概括什么。

标签: javascript arrays promise promise.all


【解决方案1】:

这会起作用

const asynchUploadGrpFiles = async (files) => {
  const [data1, data2, data3] = await Promise.all([
    get('https://httpbin.org/get?a=1'),
    get('https://httpbin.org/get?b=2'),
    get('https://httpbin.org/get?c=3'),
  ])
  const responseDetails = [...data1, ...data2, ...data3]
  console.log(responseDetails.toString())
}

然后调用函数

// Call it somewhere
await asynchUploadGrpFiles(files)

【讨论】:

  • 我该如何概括这个
  • 你能告诉我你的意思吗?
  • 如果我在 Promise.all 中有动态数量的条目怎么办。目前我有 3 个,如果我有 3 个以上怎么办
  • 我认为这是另一个问题。如果对您有用,请将其标记为答案:)
  • @SaurabhJhunjhunwala 创建一个数组,动态地把promise放进去,然后在上面调用Promise.all
【解决方案2】:

您在推送方法中使用“+”号

responseDetails.push(":::: time :::" + values);

您想要以下输出 [ :::time:::, [{...你的对象..}] ]

替换你的代码再见 responseDetails.push(":::: time :::" , values); 而是

【讨论】:

  • 我不明白反对意见。当包含一个字符串和数组(响应)时,结果将类似于: [ " "::: time :::[object Object...] ]
猜你喜欢
  • 2021-01-23
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
相关资源
最近更新 更多