Asünkroonne kood koos tagasikutsetega JavaScriptis

Oletame, et meil on mingi asünkroonne funktsioon:

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

Oletame, et me kasutame seda funktsiooni järgmisel viisil:

javascriptmake();
console.log('2'); // täidetakse esimesena

Oletame, et me tahame teha nii, et teine väljund konsooli täidetakse peale seda, kui asünkroonne operatsioon funktsiooni sees on lõpetatud. Üks lähenemisviise, mida selleks kasutatakse, on tagasikutse kasutamine: mähime ootava koodi anonüümsesse funktsiooni ja edastame selle parameetrina funktsioonile make:

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

Loomulikult ei lahenda see iseenesest meie ülesannet. Seni oleme lihtsalt teinud järgmise kokkuleppe: soovides koodi täita peale funktsiooni make käivitamist, edastage see kood tagasikutse funktsiooni make väljakutses.

Parandame funktsiooni make koodi nii, et see hakkaks töötama vastavalt meie kokkuleppele:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // mingi asünkroonne operatsioon, võib olla mitte üks
    callback();       // siis meie tagasikutse
  }, 3000);
}
Задание 1

Kirjelda, millises järjekorras kuvatakse numbrid konsoolis:

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

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