获得未决承诺的价值

时间:2018-05-12 17:05:13

标签: javascript jquery html2canvas

我使用pdfmake创建PDF,然后使用html2canvas获取许多图表的图像 我怎样才能获得html2canvas的Promise的值?

CODE

    var img = { token: html2canvas(document.getElementById("chartContainer")).then(canvas => {
    return canvas.toDataURL("image/jpeg,1.0")
    }).then(canvas =>{return canvas})}

    console.log (img.token); // Promise { <state>: "pending" }
    alert(img.token); // Object Promise

我想在功能之外使用图像。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

如果promises和.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