Asinhroni kod sa kolbekima u JavaScript
Pretpostavimo da imamo neku asinhronu funkciju:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
Pretpostavimo da koristimo ovu funkciju na sledeći način:
make();
console.log('2'); // izvršiće se prvo
Pretpostavimo da želimo da postignemo da se drugi
ispis u konzolu izvrši nakon što se izvrši asinhrona operacija
unutar funkcije.
Jedan od pristupa koji se koristi za ovo
je korišćenje kolbeka:
umotajmo kod koji čeka u anonimnu funkciju
i prosledimo je kao parametar funkciji make:
make(function() {
console.log('2');
});
Naravno, samo ovo neće rešiti naš
problem. Za sada smo samo uspostavili sledeći
dogovor: ako želite da izvršite kod nakon
okidanja make, prosledite taj kod
kao kolbek pri pozivu make.
Ispravimo kod funkcije make tako da
počne da radi u skladu sa našim
dogovorom:
function make(callback) {
setTimeout(function() {
console.log('1'); // neka asinhrona operacija, možda ne samo jedna
callback(); // zatim naš kolbek
}, 3000);
}
Objasnite, kojim redosledom će se ispisati brojevi u konzolu:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});