I have ajax requests in my for loop and I am trying to print the value of iteration index 'i' in each iteration. I am using a wrapper function(which is suggested in many posts) in for loop to execute the ajax. But when I print the value of console, it gets printed in random manner. And each time I run the for loop, it is different.
Here is my for loop and wrapper function
get_process_status(){ //new
for(var i=0; i<this.state.current_auto_video_jobs_urls.length; i++){
this.get_auto_video_jobs_array(i)
}
}
//wrapper function
get_auto_video_jobs_array(i){
var that = this;
var settings_3 = {
"async": true,
"crossDomain": true,
"url": that.state.current_auto_video_jobs_urls[i],
"method": "GET",
"headers": {
Authorization: "Token " + that.props.token_Reducer.token
},
success: function (response, textStatus, jQxhr) {
console.log("success")
console.log("value of i is " + i)
},
}
$.ajax(settings_3).done((response) => {
auto_video_jobs_array.push(response)
if(i == that.state.current_auto_video_jobs_urls.length -1 ){
console.log("i reached last value")
that.setState({current_auto_video_jobs: auto_video_jobs_array})
console.log("current jobs are" + that.state.current_auto_video_jobs)
}
});
}
Console output
You can see in 2 times, value of i printed was on different sequence. Why can't it be just 0 to 9 in sequence every time loop runs?