繁体   English   中英

JavaScript setInterval立即运行

[英]JavaScript setInterval immediately run

我立即找到了一种在javascript中运行间隔的解决方案,而不必等待第一个“超时”

setInterval(function hello() {
  console.log('world');
  return hello;
}(), 2500);

但是问题是这种解决方案无法正常工作

(function () {
    window.Banner = {

        doMagic: function () {
            setInterval(function magic() {
                console.log('magic');
                return magic;
            }, 2500);
        }
    }
})();

Banner.doMagic();

我试图返回Banner方法,将其命名并返回,但没有成功。 要点是实际构造中要复杂得多,所以我不能仅仅将它重写为广泛提供的“ return setTimeout”解决方案,因此,发现我对此做错了什么将是非常完美的。

http://jsfiddle.net/5jawxLnr/3/

也许最合适的方法是将整个回调移到setInterval调用之外,并将其放在单独的变量中:

(function () {
    window.Banner = {

        doMagic: function () {
            var magic = function() {
                console.log('magic');
            };
            setInterval(magic, 2500);
            magic();
        }
    }
})();

Banner.doMagic();

效果与您的第一个代码相同,但是这种方式使您的代码更加简洁。

您不再在第二个代码段中自动执行该功能。 您需要将其更改为以下内容:

doMagic: function () {
   setInterval(function magic() {
      console.log('magic');
      return magic;
   }(), 2500);
}

不过,我同意其他人的看法,这并不是做到这一点的最干净的方法,而且对于随之而来的下一个开发人员也不是很明显。 我建议将函数存储在变量中,立即执行它,然后在setInterval运行它:

doMagic: function () {
   var magic = function magic() {
      console.log('magic');
      return magic;
   }
   magic();
   setInterval(magic, 2500);
}

在您的代码中,无法执行所需的任务,请遵循以下方法:

 // Use function to perform the task. function doTask () { console.log("..."); } // Perform task for the first time. doTask(); // On interval do task. setInterval(doTask, 2500); 

如果将括号添加到下面的代码部分,它将执行

    doMagic: function () {
        setInterval(function magic() {
            console.log('magic');
            return magic;
        }(), 2500);                   // added them here
    }

试试这个例子

 var hello = function() { document.write('hello... '); }; setInterval(hello, 1000); hello(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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