我在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 = 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会被动态触发,没有延迟。
答案 0 :(得分:8)
将()
放在setHeight
之后,您正在调用该函数,并将其返回值传递给setTimeout
。这显然不是你想要做的。
删除()
,它应该可以正常工作。
编辑:忘了上下文。那么setTimeout(function() {underlayer.setHeight();},5000);
可能是你最好的选择。
答案 1 :(得分:1)
您需要更改setTimeout
代码。
setTimeout(function(){underlayer.setHeight()},5000);