Asinchroninis kodas su atgalinio iškvietimo funkcijomis JavaScript

Tarkime, kad turime kokią nors asinchroninę funkciją:

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

Tarkime, kad naudojame šią funkciją taip:

javascriptmake();
console.log('2'); // įvyks pirmas

Tarkime, kad norime padaryti taip, kad antroji išvestis į konsolę įvyktų po to, kai bus įvykdyta asinchroninė operacija funkcijos viduje. Vienas iš tam naudojamų būdų yra atgalinio iškvietimo funkcijų naudojimas: apgaubiama laukiamą kodą anonime funkcija ir perduodama parametru į funkciją make:

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

Žinoma, tai pati savaime neišspręs mūsų užduoties. Kol kas mes tiesiog sudarėme tokį sutartį: norėdami vykdyti kodą po make suveikimo, perduokite tą kodą atgalinio iškvietimo funkcija į make iškvietimą.

Pataisykime funkcijos make kodą taip, kad ji pradėtų veikti pagal mūsų sutartį:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // kaž kokia asinchroninė operacija, gali būti ne viena
    callback();       // tada mūsų atgalinio iškvietimo funkcija
  }, 3000);
}
Задание 1

Paaiškinkite, kokia tvarka bus išvesti skaičiai konsolėje:

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

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