JavaScript-ում ցիկլում պատկերների ասինխրոն բեռնում

Ենթադրենք պատկերների հասցեները պահվում են զանգվածում.

javascriptlet arr = ['img1.png', 'img2.png', 'img3.png'];

Մենք կարող ենք բեռնել այս պատկերները ցիկլում.

javascriptfor (let path of arr) {
  loadImage(path, function(image, err) {
    document.body.append(image);
  });
}

Կոդը ստացվեց գեղեցիկ և առանց callback hell-ի, սակայն, մենք վերադարձանք մեր երկու խնդիրներին. պատկերների հերթականությունը երաշխավորված չէ և անհնար է բռնել բոլոր պատկերների բեռնման պահը։

Եվ այս իրավիճակում լուծում չկա. անհնար է գործարկել ցիկլ, օգտագործել դրա ներսում ասինխրոն ֆունկցիա, ապա բռնել բոլոր ցիկլի ֆունկցիաների ավարտի պահը։ Կամ ձեզ պետք չէ բռնել այդ պահը և վերը նշված կոդը կհամապատասխանի ձեզ, կամ բարի գալուստ callback hell։

Սակայն, հիասթափվելու կարիք չկա - խնդրի լուծումը հնարավոր է պրոմիսների (promises) միջոցով, որոնք մենք կուսումնասիրենք հաջորդ դասերում։