【问题标题】:How to associate responses from axios.all with a key如何将来自 axios.all 的响应与键相关联
【发布时间】:2020-07-11 07:22:30
【问题描述】:

我正在尝试使用 axios.all 从对象数组中进行多次调用,以便将响应与特定键相关联:

axiosArrayOfObjects = [
    {uniqueID1: axios.get1},
    {uniqueID2: axios.get2}
    {uniqueID3: axios.get3}
]


for (var i = 0; i < axiosArrayOfObjects.length; i++) {
  for (var key in axiosArrayOfObjects[i])
    var value = axiosGetRequestArray[i][key]

    axios.all(value).then(axios.spread((...response) => {
      console.log(response[0])
    }))
}

但我收到一条错误消息“TypeError: object is not iterable”

还有其他方法可以将来自 axios.all 请求的每个响应与特定 ID 相关联吗?我需要使用调用的响应来更新数据库中的对象。

【问题讨论】:

  • 可能相关:console.log[response[0]] --> console.log(response[0])
  • 抱歉打错了,还是有同样的问题。
  • 我能看到的唯一可以抛出Object is not iterable 的地方是for..in,所以我猜你拥有的axiosArrayOfObjects 的实际数据格式不正确(一个或多个值不是对象)

标签: javascript axios


【解决方案1】:

您不需要遍历对象的键,问题是您使用value 调用axios.all(..),这是一个请求而不是请求数组。你需要做这样的事情:

const axiosArrayOfObjects = [
    {uniqueID1: axios.get1},
    {uniqueID2: axios.get2}
    {uniqueID3: axios.get3}
]


const map = axiosArrayOfObjects.reduce((a, c) => {
  Object.entries(o).forEach(([key, value]) => {
    a.ids.push(key);
    a.requests.push(value);
  });
  return a;
}, {
  requests: [],
  ids: []
})

axios.all(map.requests).then(axios.spread((...response) => {
  responses.forEach((response, index) => {
    console.log('request id', map.ids[index], 'response', response)
  })
}));

【讨论】:

    【解决方案2】:

    你可以在这里使用Promise.all 吗?

    const axiosArrayOfObjects = [
        { id: '1', get: axios.get1},
        { id: '2', get: axios.get2}
        { id: '3', get: axios.get3}
    ]
    
    /* array of promises */
    const requests = axiosArrayOfObjects.map(item => item.get());
    
    const result = await Promise.all(requests);
    console.log(result);
    /* array of results, order is the save as in `axiosArrayOfObjects`,
    so you can use indexes to match elements of two arrays */
    
    /* without await */
    Promise.all(requests).then(result => console.log(result));
    

    【讨论】:

      猜你喜欢
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 2010-12-13
      • 2020-03-27
      相关资源
      最近更新 更多