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