JavaScript についての私の理解は、コードが順次実行されるため、次の行はその上の行が実行されるまで実行されないということです。
一連の質問を一度に1つずつ保存しようとするために使用しようとしていた次のようなものがあります。
for(var i = 1; i <= assessment_question_count; i++)
{
if(valid)
{
var sort = i;
$.ajax(
{
type: "POST",
url: '/assessmentquestion/create',
data: 'assessment_id=' + assessment[1] + '&question_text=' + $('#assessment_question_text_' + sort).val() + '&assessment_question_type_id=' +
$('assessment_question_type_' + sort).val() + '&sort_order=' + i,
success: function (str)
{
var result = str.split('|');
if (result[0] == 'success')
{
var message = '<br />Question saved ';
update_display_message(message);
}
else if(result[0] == 'fail')
{
valid = false;
var message = '<br />Error saving question ';
}
else
{
valid = false;
var message = '<br />Error saving question ';
}
}
});
}
}
私が直面している問題は、それが完了するのを待たずに、ajax 呼び出しを行うとすぐに次のループに進むように見えることです。これを変更して、以前の更新まで次の質問を試行しないようにする方法はありますか?
編集:完了するまで自分自身を呼び出し続ける再帰メソッドに固執することを考えています。