Асинхрони код са колбековима у 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');
});