JavaScript-da çakyýeti çaýyrmalar bilen asinhron kod
Bizde käbir asinhron funksiýa bar bolsun:
javascriptfunction make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
Bu funksiýany şeýle ulanalym:
javascriptmake();
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:
javascriptmake(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ň:
javascriptfunction 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);
}
Задание 1
Konsolda sanlaryň haýsy tertipde çykajakdygyny düşündiriň:
javascriptfunction make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});