Ordine de executie cu jQuery-AJAX
Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
-
Marius
- Mesaje:60
Ordine de executie cu jQuery-AJAX
Am acest cod (ajax este asincron):
Cod: Selectaţi tot
function echoHello(){
return $.ajax({
//this will return "hello";
});
}
function echoWorld(){
return "world";
}
$.when(echoHello()).done(function(response){
console.log(response);
});
console.log(echoWorld());
Care afiseaza "world" și "hello" (în această ordine). Dar, din ordinea în care funcțiile sunt apelate, ar trebui să afișeze "hello" și "world".
De ce raspunsul din funcția ajax este afișat după, desi este apelata prima?
MarPlo
Mesaje:4343
Ajax face un apel către serverul web și este asincron. Nu știi cât va dura pana la raspuns. Este la fel ca:
Cod: Selectaţi tot
setTimeout(_ => { console.log('hello'); }, 0);
console.log('world');
// output: world hello
'world' va fi afișat primul, deoarece funcția asincron (cu setTimeout()) rulează după blocul direct, chiar dacă timpul este setat la 0.