Недавно я заметил поведение моего кода ниже.Функции JavaScript с ajax не выполняются один за другим?
function abc(){
a();
b();
c();
}
function a(){
// ajax call
$("#number").val("a");
// ajax call finished
}
function b(){
// ajax call
$("#number").val("b");
// ajax call finished
}
function c(){
alert($("#number").val());
// ajax call
$("#number").val("c");
// ajax call finished
}
HTML код
<input id="number" value="" type="hidden"/>
<button type="submit" id="mySubmit" onClick="abc()">Search</button>
Я думал, когда я вызываю функцию abc()
тогда первый a()
будет выполнять, а затем b()
, а затем c()
Но мне кажется, что alert
в c()
это выполняется до b()
заканчивается, потому что он показывает a
в качестве результата.
Но если код, как показано ниже он работает, как и ожидалось, (предупреждения показывает b
)
function abc(){
a();
b();
c();
}
function a(){
$("#number").val("a");
}
function b(){
$("#number").val("b");
}
function c(){
alert($("#number").val());
$("#number").val("c");
}
Почему это происходит? Являются ли эти вызовы ajax в первом коде, что-то делать с этим?
Примечание: извините, я не смог воссоздать эту проблему в скрипке. кто-то с таким опытом и знает причину, может помочь мне в этом.
И я также разместил this SO question. Эти ответы противоречат этому поведению.
ajax: «Выполнить ** асинхронный запрос HTTP (Ajax)». – Tomanow
http://blog.slaks.net/2015-01-04/async-method-patterns/ – SLaks
@Tomanow: пожалуйста, вы можете уточнить свой ответ. – prime