Асинхрони код са колбековима у 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');
});