目前我正在尝试运行一个 for 循环,它表示为数组中的每个 JSON 对象创建一个 axios post 调用并将其添加到数组中。然后我使用 Axios.all 一次调用它们。我遇到的问题是 JSON post 对象对于每个 post 调用都是相同的。
let axiosArray = []
let postData = {}
for (int x = 0; x < numOfItems; x++) {
postData['size'] = shoe.size
postData['color'] = shoe.color
let newPromise = axios({
method: 'post',
url: postShoe,
data: postData
})
.then(responsed => {
console.log('success')
})
.catch(error => {
console.log('error')
})
axiosArray.push(newPromise)
}
axios
.all(axiosArray)
.then(() => {
console.log('submitted all axios calls')
})
.catch(error => {})
它像我想要的那样运行两个 post 调用,但它使用为每个调用提供给 postData 的最后一个值。我想知道是否有一种方法可以将所有数据保存在 promise 中,就像我创建它时一样,然后在提交时它不仅会使用提供给 postData 的最后一个值。
最佳答案
axios.all
期望在没有 then
的情况下收到未处理的 promise 。迭代响应 axios.spread
接受响应作为其参数。下面的代码应该可以工作(当然可以更简洁)。
let axiosArray = []
for (int x = 0; x < numOfItems; x++) {
let postData = {}
postData['size'] = shoe.size
postData['color'] = shoe.color
let newPromise = axios({
method: 'post',
url: postShoe,
data: postData
})
axiosArray.push(newPromise)
}
axios
.all(axiosArray)
.then(axios.spread((...responses) => {
responses.forEach(res => console.log('Success'))
console.log('submitted all axios calls');
}))
.catch(error => {})
您也可以引用与您的问题类似的 post。
关于javascript - 将 Axios.all 用于 for 循环中的一组 post 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49161551/