Piltide asünkroonne laadimine tsüklis JavaScriptis
Olgu piltide teed massiivis:
let arr = ['img1.png', 'img2.png', 'img3.png'];
Me saame need pildid laadida tsüklis:
for (let path of arr) {
loadImage(path, function(image, err) {
document.body.append(image);
});
}
Kood osutus ilus ja ilma callback hellita, kuid oleme naasenud oma kahe probleemi juurde: piltide järjekord ei ole tagatud ja kõikide piltide laadimise hetke tabamine on võimatu.
Ja selles olukorras pole lahendust: tsüklit on võimatu käivitada, kasutada selles asünkroonset funktsiooni ja seejärel tabada kõigi tsükli funktsioonide lõpetamise hetke. Kas teil ei ole vaja seda hetke tabada ja ülaltoodud kood sobib teile, või oleme tere tulemast callback helli.
Kuid ärge heitke meelt - probleemi lahendus on võimalik läbi promiside, mida me uurime järgmistes õppetundides.