В основном проблема заключается в том, что вам нужно загружать каждое изображение самостоятельно. Загрузка пакета или подобный файл не существует.
Обычный подход
Подход базового c к такой проблеме будет заключаться в цикле по массиву (здесь массив изображений imgArr
) и загружать каждый элемент индивидуально.
Такая функция может выглядеть следующим образом:
for (i = 0; i < imgArr.length; i++) {
this.updateImage(imgArr[i]);
}
или с помощью метода forEach:
imgArr.forEach((img) => {
this.updateImage(img);
}
Помните : функция this.updateImage предоставляется в исходном коде.
В случае асинхронной функции, такой как загрузка, выборка данных или другие, этот подход НЕ работает. Это вызвано реализацией JS и тем фактом, что невозможно выполнить операцию внутри for (Each) l oop.
Решение поставляется с asyncForEach . Функция asyncForEach выполняет асинхронную задачу (загрузку изображения) и ожидает ее выполнения.
Реализация работает следующим образом (подробности ниже):
- Добавьте функцию asyncForEach в ваш код
- вызовите функцию asyncForEach при загрузке массива
Реализация
Для реализации асинхронной загрузки выполните следующее:
добавьте следующую функцию где-то в верхней части вашего .js
файла.
// implementation of asynchonous forEach
// array: array of items to process
// callback: the asynchonous function to process the items
async asyncForEach(array, callback) {
for (let index = 0; index < array.length; index++) {
await callback(array[index], index, array);
}
}
, чтобы затем вызвать вновь реализованную функцию, вызвать ее со следующими строками кода
( Примечание : переменная 'imgArr' представляет массив изображений для загрузки):
// create a function 'uploadArray' in which the asyncForEach is called.
const uploadArray= async () => {
await this.asyncForEach(imgArr, async (img) => {
await this.updateImage(img);
};
/* execute the function. The code following this function call will be
stalled until the images are either uploaded or failed with error
(implement error handling in the this.updateImage function
await uploadArray()
Ресурсы