Если обещания и .then
сбивают с толку, и вы как-то пытаетесь получить значения из будущего, чтобы использовать их здесь и сейчас, рассмотрите async/await
, который позволяет вам писать асинхронный код способом, который вроде выглядит синхронно:
const canvas = await html2canvas(document.getElementById("chartContainer"));
const token = canvas.toDataURL("image/jpeg,1.0");
const img = { token };
console.log (img.token);
alert(img.token);
Внутренне вышеприведенный код передается или интерпретируется таким образом, чтобы ждать выполнения обещания html2canvas
, используя эквивалент .then
. Другими словами, это выглядит так:
html2canvas(document.getElementById("chartContainer"))
.then(canvas => {
const token = canvas.toDataURL("image/jpeg,1.0");
const img = { token };
console.log (img.token);
alert(img.token);
});
Или, если по какой-то причине вы не хотите использовать async/await
, вы можете просто написать это так, чтобы начать с
PS. Предполагая, что приведенный выше код находится внутри функции, он должен быть async function
.