Javascript 如何等待image.onload事件函数中设置image.src?
在我的浏览器javascript for new image()对象中,对于onload事件,我首先在用户选择图像文件后设置image.src;然后读取图像对象的大小 但是,似乎在正确设置src之前就发生了读取。我碰巧发现了一个修复方法,即调用函数两次。但这个解决方案似乎是一个非常糟糕的主意 请让我知道如何以标准方式修复它。我的环境接受TypescriptJavascript 如何等待image.onload事件函数中设置image.src?,javascript,typescript,asynchronous,browser,Javascript,Typescript,Asynchronous,Browser,在我的浏览器javascript for new image()对象中,对于onload事件,我首先在用户选择图像文件后设置image.src;然后读取图像对象的大小 但是,似乎在正确设置src之前就发生了读取。我碰巧发现了一个修复方法,即调用函数两次。但这个解决方案似乎是一个非常糟糕的主意 请让我知道如何以标准方式修复它。我的环境接受Typescript var imgLoaded=false; var file = document.getElementById("fileInp
var imgLoaded=false;
var file = document.getElementById("fileInput").files[0];
for(let i=0;i<2;i++){
call2(file);
}
function call2(file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
if(!imgLoaded){
imgLoaded=true; img.src=(reader.result).toString();}
else{
console.log(img.width);
}}
var imgLoaded=false;
var file=document.getElementById(“fileInput”).files[0];
对于(设i=0;i我自己至少找到了一个更好的解决方案。尽管我不知道这是否是一个标准
var file = document.getElementById("fileInput").files[0];
call2(file);
function call2(file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload =async function () {
img.src= await (reader.result).toString();
console.log(await img.width);
}}
在某种程度上,你可以取代
file=document.getElementById(“fileInput”).files[0];
使用file=event.target.files[0]
并在call2中使用它,还应将事件传递给call2
例如:在html中:
,然后在js函数调用2(e){let file=e.target.files[0]…}
中,可以通过一种方式将file=document.getElementById(“fileInput”).files[0];
替换为file=event.target.files[0]
并在call2中使用它,还应将事件传递给call2@RayaNasiri,很抱歉,我不知道如何声明“事件”。你能再多写一点吗?用html:
,然后用js函数调用2(e){let file=e.target.files[0]…}
@RayaNasiri,非常感谢。我会尝试一下。所以接受我的答案:)