JavaScript-ում ցիկլում պատկերների ասինխրոն բեռնում
Ենթադրենք պատկերների հասցեները պահվում են զանգվածում.
let arr = ['img1.png', 'img2.png', 'img3.png'];
Մենք կարող ենք բեռնել այս պատկերները ցիկլում.
for (let path of arr) {
loadImage(path, function(image, err) {
document.body.append(image);
});
}
Կոդը ստացվեց գեղեցիկ և առանց callback hell-ի, սակայն, մենք վերադարձանք մեր երկու խնդիրներին. պատկերների հերթականությունը երաշխավորված չէ և անհնար է բռնել բոլոր պատկերների բեռնման պահը։
Եվ այս իրավիճակում լուծում չկա. անհնար է գործարկել ցիկլ, օգտագործել դրա ներսում ասինխրոն ֆունկցիա, ապա բռնել բոլոր ցիկլի ֆունկցիաների ավարտի պահը։ Կամ ձեզ պետք չէ բռնել այդ պահը և վերը նշված կոդը կհամապատասխանի ձեզ, կամ բարի գալուստ callback hell։
Սակայն, հիասթափվելու կարիք չկա - խնդրի լուծումը հնարավոր է պրոմիսների (promises) միջոցով, որոնք մենք կուսումնասիրենք հաջորդ դասերում։