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