⊗jsSpACInr 155 of 294 menu

JavaScript-da Kallbéklar bilan Asinxron Kod

Faraz qilaylik, bizda quyidagi asinxron funksiya mavjud:

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

Faraz qilaylik, biz bu funksiyani quyidagicha ishlatmoqchimiz:

make(); 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:

make(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:

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

Consolda raqamlar qanday tartibda chiqarilishini aytib bering:

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