Asünkroonse tulemuse edastamine callback-funktsioonile JavaScriptis
Olgu nüüd asünkroonne operatsioon pärast oma lõppemist mitte midagi konsooli väljastada, vaid saada mingi tulemus. Olgu see massiiv andmetega, mis oleks näiteks võinud saada AJAXi kaudu. Kuna me AJAXiga töötada veel ei oska, siis lihtsalt simuleerime selle saamise:
function make() {
setTimeout(function() {
let res = [1, 2, 3, 4, 5]; // massiiv tulemusega
}, 3000);
}
Teeme nii, et massiiv tulemusega edastataks callback-funktsiooni parameetrina:
function make(callback) {
setTimeout(function() {
let res = [1, 2, 3, 4, 5];
callback(res); // edastame tulemuse parameetrina
}, 3000);
}
Nüüd, callback-funktsiooni edastamisel funktsiooni
make kutsesse, saame me sellesse kirjutada parameetri
- ja sellesse parameetri satub asünkroonse
operatsiooni tulemus:
make(function(res) {
console.log(res); // meie massiiv
});
Kirjutage callback-funktsiooni kood nii, et see leiaks massiivi elementide summa tulemusega.