Asynchrónny kód s callback funkciami v JavaScripte

Majme nejakú asynchrónnu funkciu:

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

Predpokladajme, že túto funkciu používame nasledovne:

javascriptmake();
console.log('2'); // vykoná sa prvým

Predpokladajme, že chceme dosiahnuť, aby sa druhý výstup do konzoly vykonal až po tom, ako sa dokončí asynchrónna operácia vo vnútri funkcie. Jedným z prístupov, ktoré sa na to používajú, je použitie callback funkcie: zabalíme kód, ktorý chceme vykonať neskôr, do anonymnej funkcie a odovzdáme ju ako parameter funkcii make:

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

Samozrejme, samo o sebe to našu úlohu nevyrieši. Zatiaľ sme len uzavreli dohodu: ak chcete vykonať kód po spustení make, odovzdajte tento kód ako callback funkciu pri volaní make.

Upravme kód funkcie make tak, aby začala fungovať v súlade s našou dohodou:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // nejaká asynchrónna operácia, nemusí byť len jedna
    callback();       // potom náš callback
  }, 3000);
}
Задание 1

Vysvetlite, v akom poradí sa vypíšu čísla do konzoly:

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

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