Асінхронная загрузка выяў у цыкле ў 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.
Але, засмучацца не варта - вырашэнне праблемы магчыма праз промісы, якія мы будзем вывучаць у наступных уроках.