JavaScript-da Kallbéklar bilan Asinxron Kod

Faraz qilaylik, bizda quyidagi asinxron funksiya mavjud:

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

Faraz qilaylik, biz bu funksiyani quyidagicha ishlatmoqchimiz:

javascriptmake();
console.log('2'); // birinchi bo'lib bajariladi

Faraz qilaylik, biz shuni istaymizki, ikkinchi consolga chiqarish, funksiya ichidagi asinxron operatsiya bajarilgandan keyin bajarilsin. Buning uchun qo'llaniladigan yondashuvlardan biri kallbék dan foydalanishdir: kutayotgan kodni anonim funksiyaga o'rab, make funksiyasiga parametr sifatida o'tkazamiz:

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

Albatta, bu o'zi bizning muammomizni hal qilmaydi. Hozircha biz shartnoma tuzdik: make ishtirokidan keyin kodni bajarishni istasangiz, ushbu kodni make chaqiruviga kallbék sifatida o'tkazing.

Endi make funksiyasining kodini shunday tuzamizki, u bizning shartnomamizga muvofiq ishlay boshlasin:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // qandaydir asinxron operatsiya, bitta bo'lishi shart emas
    callback();       // keyin bizning kallbékimiz
  }, 3000);
}
Задание 1

Consolda raqamlar qanday tartibda chiqarilishini aytib bering:

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

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