Асинхроно вчитување на слики во циклус во 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, кои ќе ги учиме во следните лекции.