Вы должны думать о JavaScript как о событиях, а не как о процедурных, если вы занимаетесь программированием AJAX. Вы должны подождать, пока первый вызов не завершится, прежде чем выполнить второй. Способ сделать это - привязать второй вызов к обратному вызову, который срабатывает, когда первый завершен. Не зная больше о внутренней работе вашей библиотеки AJAX (надеюсь, вы используете библиотеку), я не могу рассказать вам, как это сделать, но, вероятно, она будет выглядеть примерно так:
showLoader();
updateStatus('cron1', function() {
updateStatus('cron2', function() {
updateStatus('cron3', function() {
updateStatus('cronEmail', function() {
updateStatus('cronHourly', function() {
updateStatus('cronDaily', funciton() { hideLoader(); })
})
})
})
})
})
});
Идея состоит в том, что updateStatus
принимает свой обычный аргумент плюс функцию обратного вызова, которую нужно выполнить после завершения. Это довольно распространенный способ передачи функции для запуска onComplete
в функцию, которая обеспечивает такой хук.
Обновление
Если вы используете jQuery, вы можете прочитать о $.ajax()
здесь: http://api.jquery.com/jQuery.ajax/
Ваш код, вероятно, выглядит примерно так:
function updateStatus(arg) {
// processing
$.ajax({
data : /* something */,
url : /* something */
});
// processing
}
Вы можете изменить свои функции так, чтобы они принимали обратный вызов в качестве второго параметра, например:
function updateStatus(arg, onComplete) {
$.ajax({
data : /* something */,
url : /* something */,
complete : onComplete // called when AJAX transaction finishes
});
* *} Тысяча двадцать-один