JavaScript-da çakyýeti çaýyrmalar bilen asinhron kod
Bizde käbir asinhron funksiýa bar bolsun:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
Bu funksiýany şeýle ulanalym:
make();
console.log('2'); // birinji ýerine ýetiriler
Ikiji konsol çykyşy, funksiýanyň içindäki
asinhron amal ýerine ýetirilenden soň
ýerine ýetirilmegini isleýäris.
Bun üçin ulanylan ýörelgeleriň biri,
çakyýeti çaýyrmalary ulanmakdyr:
garaşýan kody atsyz funksiýa hökmünde gaplaýarys we
make funksiýasyna parametr hökmünde geçirýäris:
make(function() {
console.log('2');
});
Elbetde, bu, özi bilen, biziň
meselemyzy çözmez. Hälki biz diňe şu ylalaşyga geldik: make işlenenden soň kody ýerine ýetirmek isleseňiz, bu kody
make çaýyryşyna çakyýet çaýyrmasy hökmünde geçiriň.
make funksiýasynyň koduny, biziň
ylalaşygymyza laýyklykda işlemegi üçin düzedeliň:
function make(callback) {
setTimeout(function() {
console.log('1'); // käbir asinhron amal, bir ýada birnäçesi bolup biler
callback(); // soňra biziň çakyýet çaýyrmamyz
}, 3000);
}
Konsolda sanlaryň haýsy tertipde çykajakdygyny düşündiriň:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});