Kodi Asinkron me Callback në JavaScript
Le të themi se kemi një funksion asinkron:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
Le të themi se e përdorim këtë funksion në mënyrën e mëposhtme:
make();
console.log('2'); // do të ekzekutohet i pari
Le të themi se duam të bëjmë që printimi i dytë
në konsolë të ekzekutohet pasi të ketë përfunduar
operacioni asinkron
brenda funksionit.
Një nga qasjet e përdorura për këtë
është përdorimi i callback-ëve:
le të mbështjellim kodin në pritje në një funksion
anonim dhe ta kalojmë si parametër në funksionin make:
make(function() {
console.log('2');
});
Sigurisht, vetëm kjo nuk do ta zgjidhë
problemin tonë. Tani për tani ne thjesht kemi bërë
marrëveshjen e mëposhtme: nëse dëshironi të ekzekutoni kod pasi
të aktivizohet make, atëherë kaloni atë kod
si callback në thirrjen make.
Le të rregullojmë kodin e funksionit make në mënyrë që
ai të fillojë të punojë në përputhje me
marrëveshjen tonë:
function make(callback) {
setTimeout(function() {
console.log('1'); // një operacion asinkron, mund të jetë jo vetëm një
callback(); // pastaj callback-ja jonë
}, 3000);
}
Tregoni, në çfarë radhe do të printohen numrat në konsolë:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});