Я ищу что-то вроде этого
function someFunc() {
callAjaxfunc(); //may have multiple ajax calls in this function
someWait(); // some code which waits until async calls complete
console.log('Pass2');
}
function callAjaxfunc() {
//All ajax calls called here
console.log('Pass1');
}
Что я пробовал?
1 Jquery.when()
пытался использовать его.. он работает нормально. Но не так, как я хочу. $.when
будет ждать, но код рядом с $.when()
будет работать без ожидания. Код внутри do callback
работает только после вызовов ajax
2. setTimeOut() с глобальным флагом
Я был настолько уверен, что это сработает. Я пробовал как следует.
GlobalFlag = false;
function someFunc()
callAjaxfunc(); //may have multiple ajax calls in this function
setTimeOut(waitFunc, 100); // some which waits until async calls complete
console.log('Pass2');
}
function callAjaxfunc() {
//All ajax calls called here
onAjaxSuccess: function() {
GlobalFlag = true;
};
console.log('Pass1');
}
function waitFunc() {
if (!GlobalFlag) {
setTimeOut(waitFunc, 100);
}
}
По-прежнему не удается получить желаемый результат. Я здесь что-то не так? Это не так?
Результат, который я хотел, должен выглядеть следующим образом
Pass1
Pass2
Невозможно выполнить какую-либо скрипку, поскольку ей нужны вызовы AJAX
EDIT: многие из них предлагали обратные вызовы.. я знаю о них.. но все же код рядом с somewait()
будет выполнен. Я хочу, чтобы браузер полностью прекратил выполнение кода рядом с somewait()
до вызова ajax.. Также может быть плохой практикой, но стоит знать и попробовать, если это возможно...