Pagina 1 din 1

Ordine de executie cu jQuery-AJAX

Scris: Lun Noi 02, 2020
de Marius
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?

Ordine de executie cu jQuery-AJAX

Scris: Lun Noi 02, 2020
de MarPlo
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.