Я реализую рекурсивный метод, который берет массив изображений и рисует их в холст:
async drawImages(ctx, images): Promise<any> {
const img = images.shift();
const imgToDraw = new Image();
imgToDraw.src = img.src;
imgToDraw.onload = () => {
ctx.drawImage(imgToDraw, img.x, img.y, img.w, img.h);
if (images.length > 0) {
this.drawImages(ctx, images);
} else {
console.log("I - Processing");
return Promise.resolve();
}
}
}
В конце выполнения этого метода мне нужно получить DataURL холстаи я делаю это так:
someCallingMethod() {
//...
await this.drawImages(ctx, images);
console.log("II - Finished");
console.log(canvas.toDataURL());
}
Проблема, с которой я сталкиваюсь, заключается в том, что ожидание не работает по методу drawImages
.При выполнении этого кода я всегда получаю лог "II - Finished"
перед "I - Processing"
, и поэтому canvas.toDataURL()
никогда не содержит изображений, которые должны быть нарисованы на холсте.
Спасибо