Я бы сопоставил массив URL-адресов с массивом обещаний, которые разрешаются вашим объектом при загрузке изображения.Затем используйте Promise.all
, чтобы дождаться их загрузки (разрешения).Например
Promise.all(frameImage.map(({ url }) => new Promise((resolve, reject) => {
const image = new Image()
image.onload = () => resolve({
image,
width: image.width,
height: image.height,
x: 0,
y: 0,
draggable: true
})
image.onerror = reject
image.src = src
}))).then(createdImages => {
// now you can iterate
}).catch(err => {
console.error('Could not load all images', err)
})