Asynchrónny prenos výsledku do spätného volania v JavaScripte
Nech teraz asynchrónna operácia po svojom dokončení nevypisuje nič do konzoly, ale získa nejaký výsledok. Nech je to pole s údajmi, ktoré by napríklad mohlo byť získané cez AJAX. Ale keďže s AJAX ešte nevieme pracovať, jednoducho to simulujeme:
function make() {
setTimeout(function() {
let res = [1, 2, 3, 4, 5]; // pole s výsledkom
}, 3000);
}
Urobíme to tak, aby sa pole s výsledkom prenášalo do parametra spätného volania:
function make(callback) {
setTimeout(function() {
let res = [1, 2, 3, 4, 5];
callback(res); // prenášame výsledok parametrom
}, 3000);
}
Teraz, pri prenose spätného volania do volania funkcie
make môžeme do neho napísať parameter
- a do tohto parametra sa dostane výsledok asynchrónnej
operácie:
make(function(res) {
console.log(res); // naše pole
});
Doplňte kód spätného volania tak, aby našiel súčet prvkov poľa s výsledkom.