Добавьте ожидание, пока не загрузится полный холст, затем найдите base64 этого холста вместо использования времени.
function make_base(bg_img, width, height)
{
return new Promise(function(resolve, reject) {
base_image = new Image();
base_image.src = bg_img;
base_image.onload = function(){
ctx.drawImage(base_image, 0, 0, width, height);
resolve()
}
})
}
function loadCanvas(width, height) {
canvas = document.getElementById('canvas');
canvas.id = "canvas";
canvas.width = width;
canvas.height = height;
ctx = canvas.getContext("2d");
canvas.style.zIndex = 8;
setTimeout(function() {
base64 = canvas.toDataURL("image/jpeg",1);
console.log(base64);
}, 3500);
}
function fillText(name, x_name, y_name, name_color, name_font) {
ctx.fillStyle = name_color;
ctx.font = name_font;
ctx.fillText(name, x_name, y_name);
}
Здесь Canvas несколько раз загружается. Поскольку я установил 3,5 секунды для base64 Url, иногда содержимое холста не загружается, но я получаю пустое base64.
function work() {
loadCanvas(x,y)
make_base(xxxxx).then(function () {
fillText(abcd)
})
}
Как мне ждать base64, пока не загрузится полный холст.