Using Axios.all for an array of post calls in a for loop
axios.all
expects to receive a unhandled promise without the then
. To iterate over the responses axios.spread
accepts the responses as its arguments. The code below should work(Could certainly be more concise).
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 => {})
You could also refer this post which is similar to your question.
Totals
Updated on December 04, 2022Comments
-
Totals over 1 year
Currently I am trying to run a for loop that says for each JSON object in a array create an axios post call and add it to an Array. Then I am using Axios.all to call them all at once. The issue I'm having is the JSON post object is the same for each of the post calls.
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 => {})
It runs two post calls like I want but its using the last value supplied to postData for each of the calls. I am wondering if there is a way to save all the data in the promise as it is when I create it and then on submit it will not only use the last value supplied to the postData.
-
Totals about 6 yearsthe issue im having isnt the responses. Its that each post call is using the same postData json structure. If I want to add 300 shoes it'll only add the last one entered 300 times instead of what the postData was at the time the promise was created.
-
Gokul Chandrasekaran about 6 yearsThat is because the
postData
is declared outside the loop, javascript accessed objects by reference. Declaring thepostData
object within the loop will solve the issue. I have edited the answer to reflect the same. -
rrrm93 almost 5 yearsi keep getting the message axios.all is not a function
-
yusufcode about 2 yearsthere are 18 items in an array but it's only inserting one item of them. so, only one promise is working. what should i do in this case?