⊗jsSpACInr 155 of 294 menu

JavaScript да коллбэклар орқали асинхрон код

Фарз қилайлик, бизда бирор асинхрон функция бор:

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

Фарз қилайлик, биз бу функцияни қуйидагича ишлатамиз:

make(); console.log('2'); // биринчи бажарилади

Фарз қилайлик, биз истаймизки, иккинчи консолга чиқиш, функция ичидаги асинхрон операция бажарилганидан кейин бажарилсин. Бунинг учун ишлатиладиган ёндашувлардан бири коллбэклардан фойдаланишдир: кутиладиган кодни аноним функцияга ўраб, функция makeга параметр сифатида ўтказамиз:

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

Албатта, бу ўзимизнинг вазифамизни ечмайди. Ҳозирча биз фақат қуйидаги келишувга келдик: make сўнгасидан кодни бажаришни истасангиз, у кодни коллбэк сифатида make чақирувига ўтказанг.

make функциясининг кодини шундай ўзгартирамизки, у бизнинг келишувимизга мувофиқ ишлаша бошласин:

function make(callback) { setTimeout(function() { console.log('1'); // бирор асинхрон операция, бир нечта бўлиши мумкин callback(); // сўнгра бизнинг коллбэкимиз }, 3000); }

Консолда сонлар қандай тартибда чиқарилишини айтинг:

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