Асінхронная загрузка выяў у цыкле ў 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.

Але, засмучацца не варта - вырашэнне праблемы магчыма праз промісы, якія мы будзем вывучаць у наступных уроках.