javascript - 超时不超时

标签 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 = 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 是 emidiately 触发的,没有延迟。

最佳答案

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

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

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

关于javascript - 超时不超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17298205/

相关文章:

javascript - 如何管理独立 react 组件之间的通信?

javascript - 如何在ajax响应后刷新jquery中的表单

javascript - JQuery 选择器内的变量

jquery - 轨道上的 Ajax 4

javascript - jQuery根据下一个元素更改td的类

javascript - 如何通过jquery选择ul插入li?

javascript - 如何让 jqGrid 工具栏搜索工作?

javascript - R Shiny 数据表: prevent deselection of an already selected row when you click on it again

javascript - 如何禁用chrome中的保存密码提示

javascript - 是否可以显式更改网页的方向?