Je cherche quelque chose comme ceci
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');
}
Ce que j'ai essayé ?
1 Jquery.when()
J'ai essayé de l'utiliser. Il fonctionne bien. Mais pas comme je le souhaite. $.when
attendra mais le code à côté de $.when()
fonctionne sans attendre. Le code à l'intérieur do callback
ne fonctionne qu'après des appels ajax
2. setTimeOut() avec un drapeau global
J'étais tellement sûr que ça allait marcher. J'ai essayé ce qui suit.
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);
}
}
Je n'arrive toujours pas à obtenir le résultat souhaité. Est-ce que je fais quelque chose de mal ici ? Ce n'est pas la bonne méthode ?
Le résultat que je voulais devrait venir comme ceci
Pass1
Pass2
Impossible de faire des manipulations car cela nécessite des appels AJAX.
EDIT : Comme beaucoup ont suggéré des callbacks je les connais mais quand même le code à côté de somewait()
sera exécuté...Je veux que le navigateur arrête complètement d'exécuter le code à côté de somewait()
jusqu'à l'appel ajax... Aussi, cela peut être une mauvaise pratique mais cela vaut la peine de savoir et d'essayer si possible...