Asynkronisen tuloksen välittäminen takaisinkutsussa JavaScriptissä
Oletetaan nyt, että asynkroninen operaatiota saatuaan valmiiksi ei tulosta mitään konsoliin, vaan saa jonkin tuloksen. Olkoon tämä tietotaulukko, joka olisi voitu esimerkiksi hakea AJAX:lla. Mutta koska emme osaa vielä käsitellä AJAX:ia, simuloidaan sen saaminen:
function make() {
setTimeout(function() {
let res = [1, 2, 3, 4, 5]; // taulukko tuloksella
}, 3000);
}
Tehdään niin, että tulostaulukko välitetään takaisinkutsufunktion parametriksi:
function make(callback) {
setTimeout(function() {
let res = [1, 2, 3, 4, 5];
callback(res); // välitetään tulos parametrina
}, 3000);
}
Nyt, kun välitämme takaisinkutsufunktion funktion
make kutsussa, voimme kirjoittaa siihen parametrin
- ja tähän parametriin päätyy asynkronisen
operaation tulos:
make(function(res) {
console.log(res); // taulukkomme
});
Täydennä takaisinkutsufunktion koodi niin, että se löytää tulostaulukon alkioiden summan.