JavaScript-da çakyýeti çaýyrmalar bilen asinhron kod

Bizde käbir asinhron funksiýa bar bolsun:

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

Bu funksiýany şeýle ulanalym:

javascriptmake();
console.log('2'); // birinji ýerine ýetiriler

Ikiji konsol çykyşy, funksiýanyň içindäki asinhron amal ýerine ýetirilenden soň ýerine ýetirilmegini isleýäris. Bun üçin ulanylan ýörelgeleriň biri, çakyýeti çaýyrmalary ulanmakdyr: garaşýan kody atsyz funksiýa hökmünde gaplaýarys we make funksiýasyna parametr hökmünde geçirýäris:

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

Elbetde, bu, özi bilen, biziň meselemyzy çözmez. Hälki biz diňe şu ylalaşyga geldik: make işlenenden soň kody ýerine ýetirmek isleseňiz, bu kody make çaýyryşyna çakyýet çaýyrmasy hökmünde geçiriň.

make funksiýasynyň koduny, biziň ylalaşygymyza laýyklykda işlemegi üçin düzedeliň:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // käbir asinhron amal, bir ýada birnäçesi bolup biler
    callback();       // soňra biziň çakyýet çaýyrmamyz
  }, 3000);
}
Задание 1

Konsolda sanlaryň haýsy tertipde çykajakdygyny düşündiriň:

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

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