我有一个应用程序必须在一些事件后将用户发送到主页。为此,我使用了一些效果很好的代码:
var waitime = 1000;
var handle=setInterval(function () {
$('.wrapper').html(divResp);
$('body').append(js);
clearInterval(handle);
}, waitime);
但是我试图创建一个要调用的函数,而不是每次都复制代码。因此,经过一些研究setInterval and how to use clearInterval和clearInterval outside of method containing setInterval,我创建了这个:
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解决问题。任何一个人?
答案 0 :(得分:1)
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);

答案 1 :(得分:0)
您在第一次运行代码后清除时间间隔。所以你所做的只是setTimeout
所做的。您需要setTimeout
只在等待waitTime
后运行一次。
function refreshToHomePage(handle, waitime) {
setTimeout(function() {
$('.wrapper').html(divResp);
$('body').append(js);
clearInterval(handle);
}, waitime);
}
答案 2 :(得分:0)
如果您希望代码在等待时间后执行一次,setInterval
不是此作业的正确功能,但setTimeout
是。
setInterval
将每隔 n 秒执行您的代码,直到您执行clearInterval
。但是,setTimeout
会在 n 秒后执行一次代码,因此是解决问题的正确方法。
不要试图让setInterval成为不存在的东西:)