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