JavaScript'те коллбэктер менен асинхрондук код

Анда бизде бир асинхрондук функция бар деп коёлу:

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

Бул функцияны төмөнкүдөй колдонобуз деп коёлу:

javascriptmake();
console.log('2'); // биринчи аткарылат

Экинчи консолго чыгаруу функциянын ичиндеги асинхрондук операция аткарылгандан кийин аткарылсын каалайбыз деп коёлу. Бул үчүн колдонулган жолдордун бири коллбэкти колдонуу: кийинки кодду анонимдик функцияга ороп, make функциясына параметр катары өткөрөбүз:

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

Албетте, бул өзүнчө биздин маселебизди чечпейт. Биз жөн гана төмөнкү макулдашууну түздүк: make аткарылгандан кийин кодду иштетүүнү кааласаңыз, ал кодду make чакыруусуна коллбэк катары өткөрүңүз.

make функциясынын кодун макулдашкан ыңгайыбызда иштөө үчүн түзөлү:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // кандайдыр бир асинхрондук операция, бир эмес болушу мүмкүн
    callback();       // анан биздин коллбэк
  }, 3000);
}
Задание 1

Консолго сандар кайсы тартипте чыгарылаарын айтыңыз:

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

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