0
私のforループでajaxリクエストがあり、各繰り返しで繰り返しインデックスの値 'i'を出力しようとしています。私はforループでajaxを実行するラッパー関数(多くの記事で示唆されている)を使用しています。しかし、私はコンソールの値を印刷すると、ランダムに印刷されます。そして、私がforループを実行するたびに、それは異なっています。forループ内のajaxが順番に実行されない
は、ここに私のループとラッパー関数の
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)
}
});
}
コンソール出力
あなたは2回で見ることができる、iの値が異なるシーケンスにあった印刷です。ループが実行されるたびに順番に0〜9になるのはなぜですか?
の
success
ハンドラ内でループを配置する必要が動作するようにあなたのコードの場合 ... –https://stackoverflow.com/questions/11488014/ asynchronous-process-a-javascript-for-loop – Akhil