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');
});