1

我在 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 是立即触发的,而不是延迟。

4

2 回答 2

8

通过放置()after setHeight,您正在调用该函数,并将其返回值传递给setTimeout。这显然不是你想要做的。

删除()它应该可以正常工作。

编辑:忘记上下文。setTimeout(function() {underlayer.setHeight();},5000);那么,这可能是你最好的选择。

于 2013-06-25T13:09:30.120 回答
1

您需要更改您的setTimeout代码。

setTimeout(function(){underlayer.setHeight()},5000);
于 2013-06-25T13:10:54.953 回答