[英]How to create a function setInterval with clearInterval inside it?
我有一个应用程序,必须在发生一些事件后将用户引导到首页。 为此,我使用了这段运行良好的代码:
var waitime = 1000;
var handle=setInterval(function () {
$('.wrapper').html(divResp);
$('body').append(js);
clearInterval(handle);
}, waitime);
但是我试图创建一个要调用的函数,而不是每次都复制代码。 因此,在重新研究setInterval以及如何在 包含setInterval的方法之外 使用clearInterval和clearInterval之后,我创建了一个:
function refreshToHomePage3(handle,waitime){
return setInterval(function () {
$('.wrapper').html(divResp);
$('body').append(js);
clearInterval(handle);
}, waitime);
}
问题是当调用函数时,如下所示:
var refreshIntervalId=refreshToHomePage3(refreshIntervalId,waitime);
我有一个无限循环。 我已经使用setTimeout而不是setInterval解决了问题,该函数变成了这样的一个:
function refreshToHomePage2(waitime){
setTimeout(function () {
$('.wrapper').html(divResposta);
$('body').append(js);
}, waitime);
}
但是我想知道如何使用setInterval和clearInterval解决问题。 有什么想法吗?
这里建议使用setTimeout
。 但是您可以像这样使用setInterval
。
function refreshToHomePage3(handle,waitime){
handle = setInterval(function () {
$('.wrapper').html(divResp);
$('body').append(js);
clearInterval(handle);
}, waitime);
return handle;
}
实际上,不需要将句柄变量传递给函数。
function refreshToHomePage3(waitime){ var handle = setInterval(function () { alert("called after waitime"); clearInterval(handle); }, waitime); return handle; } var handle = refreshToHomePage3(5000);
您将在第一次运行代码后清除间隔。 因此,您要做的就是setTimeout
所做的事情。 您需要setTimeout
,它在等待waitTime
之后仅运行一次。
function refreshToHomePage(handle, waitime) {
setTimeout(function() {
$('.wrapper').html(divResp);
$('body').append(js);
clearInterval(handle);
}, waitime);
}
如果希望代码在等待时间之后仅执行一次,则setInterval
不是此作业的正确函数,而setTimeout
是。
setInterval
将每n秒执行一次代码,直到您执行clearInterval
为止。 但是, setTimeout
将在n秒后执行一次代码,因此是解决问题的正确方法。
不要试图使setInterval不是它:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.