Cod asincron cu callback-uri în JavaScript

Să presupunem că avem o anumită funcție asincronă:

javascriptfunction make() {
  setTimeout(function() {
    console.log('1');
  }, 3000);
}

Să presupunem că folosim această funcție în felul următor:

javascriptmake();
console.log('2'); // se va executa primul

Să presupunem că vrem să facem astfel încât al doilea afișaj în consolă să se execute după ce se va finaliza operația asincronă în interiorul funcției. Una dintre abordările utilizate pentru aceasta este utilizarea unui callback: înfășurăm codul care așteaptă într-o funcție anonimă și o transmitem ca parametru funcției make:

javascriptmake(function() {
  console.log('2');
});

Desigur, asta în sine nu ne va rezolva problema. Deocamdată am stabilit pur și simplu următoarea înțelegere: dacă doriți să executați cod după activarea make, transmiteți acel cod ca un callback la apelul make.

Să corectăm codul funcției make astfel încât ea să înceapă să funcționeze în conformitate cu înțelegerea noastră:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // o operație asincronă oarecare, poate fi nu una singură
    callback();       // apoi callback-ul nostru
  }, 3000);
}
Задание 1

Spuneți în ce ordine se vor afișa numerele în consolă:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1');
    callback();
  }, 3000);
}

make(function() {
  console.log('2');
  console.log('3');
});