Javascript 超时不';t超时
我在javascript对象中有一组函数。以下是其中之一:Javascript 超时不';t超时,javascript,jquery,Javascript,Jquery,我在javascript对象中有一组函数。以下是其中之一: addImage: function(evt) { var file = evt.target.files[0]; /* Only process image files.*/ if(file.type.match('image.*')) { /*Add image to FileReader object*/ var reader = ne
addImage: function(evt) {
var file = evt.target.files[0];
/* Only process image files.*/
if(file.type.match('image.*')) {
/*Add image to FileReader object*/
var reader = new FileReader();
reader.readAsDataURL(file);
/*Add image to local storage */
reader.onload = (function(theFile) {
return function(e) {
localStorage.setItem(underlayer.url, e.target.result);
//add image
underlayer.setImage();
underlayer.setPosition();
setTimeout(underlayer.setHeight(), 5000);
};
})(file);
}
},
我希望underlayer.setHeight()在延迟后触发,这是必要的,因为它读取加载到本地存储器中的图像的高度,这需要几毫秒。但是,underlayer.setHeight会立即触发,而不是延迟触发。通过在setHeight
之后放置()
,您正在调用该函数,并将其返回值传递给setTimeout
。这显然不是你想要做的
卸下()
,它应该可以正常工作
编辑:忘记上下文<代码>设置超时(函数(){underlayer.setHeight();},5000)那么,code>可能是您最好的选择。将()
放在setHeight
之后,您正在调用该函数,并将其返回值传递给setTimeout
。这显然不是你想要做的
卸下()
,它应该可以正常工作
编辑:忘记上下文<代码>设置超时(函数(){underlayer.setHeight();},5000)那么,代码>可能是您的最佳选择。您需要更改
设置超时时间
setTimeout(function(){underlayer.setHeight()},5000);
您需要更改setTimeout
代码
setTimeout(function(){underlayer.setHeight()},5000);
正如我所理解的,你不应该使用超时,而是添加图像的onload事件正如我所理解的,你不应该使用超时,而是添加图像的onload事件啊,这是真的。忘了那个XDAh,没错。忘了那个XD