gpt4 book ai didi

javascript - 为什么settimeout不延迟函数执行?

转载 作者:可可西里 更新时间:2023-11-01 02:32:19 26 4
gpt4 key购买 nike

function tryToDownload(url)
{

oIFrm = document.getElementById('myIFrm');
oIFrm.src = url;
// alert(url);
// url=escape(url);

setTimeout(deletefile(url), 25000);
}

下面是删除文件函数

function deletefile(url){

$.ajax({
type:'post',
url: "<%= addToDoDeleteDownloadFile %>",
data:{filename:url},
type : "GET",
timeout : 20000,
dataType : "text",
success : function(data) {
alert("success");

}
});
}

上面是我的 jQuery,我在 25 秒后最后调用了一个函数,但它如何不延迟 deletefile(url) 函数并在之后执行。所以应该是什么问题?

最佳答案

在这一行中,您将调用您的函数并将其结果 传递给setTimeout() .

setTimeout(deletefile(url), 25000);

如果你想延迟执行,添加一个包装函数:

setTimeout( function(){ deletefile(url); }, 25000);

编辑

@Petah 提出的替代方案:

setTimeout(deletefile, 25000, url);

延迟后传递给 setTimeout() 的所有参数将在执行时传递给函数。所以在这种情况下,您将 reference 传递给函数,延迟,然后按此顺序将参数传递给函数!

注意根据MDN这种传递参数的方式在 IE9 之前的 IE 中不起作用。

关于javascript - 为什么settimeout不延迟函数执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14001795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com