【发布时间】:2021-08-04 08:04:57
【问题描述】:
当我尝试将画布转换为 blob 时,我的值未定义。我在下面有这段代码可以正常工作,但是当我尝试将下面的控制台日志移动到函数时,它给了我未定义的结果。
这是工作代码:
const handleSave = (params) => {
let previewUrl;
previewCanvasRef.current.toBlob(
(blob) => {
previewUrl = window.URL.createObjectURL(blob);
console.log(previewUrl);
},
'image/png',
1
);
}
当我尝试在下面创建控制台日志时。那么它给了我一个无敌的价值:
const handleSave = (params) => {
let previewUrl;
previewCanvasRef.current.toBlob(
(blob) => {
previewUrl = window.URL.createObjectURL(blob);
},
'image/png',
1
);
console.log(previewUrl);
}
这是我尝试过的但错误:
const handleSave = (params) => {
let previewUrl;
previewCanvasRef.current.toBlob(
async (blob) => {
previewUrl = window.URL.createObjectURL(blob);
},
'image/png',
1
).then((res) => console.log(res));
}
【问题讨论】:
-
不,没有什么将它改回 undefined ...您的第二段代码在设置 previewUrl 之前记录它 - 因为 ... asyncrhony
-
toBlob 函数的第一个参数是回调。这将以异步方式工作。在第二种情况下,控制台将立即被记录(在调用回调之前),因此它将不起作用。
-
我如何设置它的确切值?对此感到抱歉。我是 js @JaromandaX 的初学者
-
你正在设置它...
previewUrl = window.URL.createObjectURL(blob);...你需要在回调中做任何你需要的事情 -
在你的回调中做你的控制台。
标签: javascript ecmascript-6 es6-promise