繁体   English   中英

如何使用内部的clearInterval创建函数setInterval?

[英]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的方法之外 使用clearIntervalclearInterval之后,我创建了一个:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM