Асинхроно пренесување на резултат во callback во JavaScript
Нека асинхроната операција, по нејзиното завршување, не испишува ништо во конзола, туку добива некој резултат. Нека тоа биде низа со податоци, која, на пример, можеше да се добие преку AJAX. Но бидејќи со AJAX сеуште не знаеме да работиме, едноставно ќе го симулираме ова добивање:
function make() {
setTimeout(function() {
let res = [1, 2, 3, 4, 5]; // низа со резултат
}, 3000);
}
Ќе направиме така што низата со резултатот ќе се пренесе како параметар на callback-от:
function make(callback) {
setTimeout(function() {
let res = [1, 2, 3, 4, 5];
callback(res); // го пренесуваме резултатот како параметар
}, 3000);
}
Сега, при пренесување на callback-от во повикот на функцијата
make можеме да напишеме во него параметар
- и во тој параметар ќе влезе резултатот од асинхроната
операција:
make(function(res) {
console.log(res); // нашата низа
});
Дополни го кодот на callback-от така што ќе ја најде сумата на елементите од низата со резултатот.