如何用clearInterval创建一个函数setInterval呢?

时间:2014-12-18 06:30:49

标签: javascript setinterval clearinterval

我有一个应用程序必须在一些事件后将用户发送到主页。为此,我使用了一些效果很好的代码:

var waitime = 1000;
var handle=setInterval(function () {  
        $('.wrapper').html(divResp);
        $('body').append(js);
        clearInterval(handle);   
    }, waitime);

但是我试图创建一个要调用的函数,而不是每次都复制代码。因此,经过一些研究setInterval and how to use clearIntervalclearInterval 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解决问题。任何一个人?

3 个答案:

答案 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成为不存在的东西:)