我在一个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()在延迟后触发它是必要的,因为它读取加载到本地存储中的图像的高度,这需要几个milliseconds.However,underlayer.setHeight是发射触发的,而不是延迟的。
发布于 2013-06-25 21:09:30
通过将()放在setHeight之后,可以调用该函数,并将其返回值传递给setTimeout。这显然不是你想要做的。
卸下(),它应该可以正常工作。
编辑:忘记上下文。那么,setTimeout(function() {underlayer.setHeight();},5000);可能是您最好的选择。
发布于 2013-06-25 21:10:55
您需要更改您的setTimeout代码。
setTimeout(function(){underlayer.setHeight()},5000);https://stackoverflow.com/questions/17298205
复制相似问题