代码之家  ›  专栏  ›  技术社区  ›  Itsmeromka

JavaScript setInterval立即运行

  •  1
  • Itsmeromka  · 技术社区  · 10 年前

    我找到了一个解决方案,可以立即在javascript中运行interval,而不是等待第一个“超时”

    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方法,命名它并返回,但没有成功。 重点是实际构造中的情况要复杂得多,所以我不能像广泛提供的那样将其重写为“returnsetTimeout”解决方案,所以找到我在这一点上做错了什么是非常完美的。

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

    5 回复  |  直到 10 年前
        1
  •  4
  •   fstanis    10 年前

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

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

    效果与第一个代码相同,但这样代码会更干净一些。

        2
  •  4
  •   Curtis Rolando Quezada    10 年前

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

    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);
    }
    
        3
  •  2
  •   Asons Oliver Joseph Ash    10 年前

    如果将括号添加到下面的代码部分,则会

        doMagic: function () {
            setInterval(function magic() {
                console.log('magic');
                return magic;
            }(), 2500);                   // added them here
        }
    
        4
  •  1
  •   Anand Sudhanaboina    10 年前

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

    // Use function to perform the task.
    function doTask () {
    	console.log("...");
    }
    // Perform task for the first time.
    doTask();
    // On interval do task.
    setInterval(doTask, 2500);
        5
  •  1
  •   user2575725 user2575725    10 年前

    试试这个例子

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