Asinhronais kods ar atsauksmēm JavaScript

Pieņemsim, ka mums ir kāda asinhrona funkcija:

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

Pieņemsim, ka mēs izmantojam šo funkciju šādi:

javascriptmake();
console.log('2'); // izpildīsies pirmais

Pieņemsim, ka mēs vēlamies panākt, lai otrais izvads konsolē izpildītos pēc tam, kad izpildīsies asinhronā operācija funkcijas iekšienē. Viena no pieejām, ko šim nolūkam izmanto, ir atsauksmes izmantošana: ietinam gaidāmo kodu anonīmā funkcijā un padodam to kā parametru funkcijai make:

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

Protams, pats par sevi tas neatrisinās mūsu uzdevumu. Pašlaik mēs vienkārši noslēdzām šādu vienošanos: ja vēlaties izpildīt kodu pēc make izpildes, nododiet šo kodu atsauksmes veidā make izsaukumā.

Izlabosim funkcijas make kodu tā, lai tā sāktu strādāt saskaņā ar mūsu vienošanos:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // kāda asinhronā operācija, var būt ne viena
    callback();       // tad mūsu atsauksme
  }, 3000);
}
Задание 1

Pastāstiet, kādā secībā konsolē tiks izvadīti skaitļi:

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

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