На прошлой неделе писал класс, который работал с canvas.
Изображения так подгружал:
/**
* @param {string} path
* @return {Promise}
*/
AddressConstructor.prototype.loadImage=function(path){
const That=this;
return new Promise(function(resolve,reject){
const ImageID='Constructor-image';
let elem=document.getElementById(ImageID);
if(!!elem)
elem.parentNode.removeChild(elem);
elem=document.createElement('img');
elem.style.cssText='position:absolute;top:-9999px;left:-999999px;';
elem.src=path;
elem.addEventListener('load',function(){
elem.parentNode.removeChild(elem);
setTimeout(resolve,10,this);
});
elem.addEventListener('error',function(){
elem.parentNode.removeChild(elem);
reject(this);
});
document.body.appendChild(elem);
}).then(function(image){
That.__image=image;
return image;
});
};