Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript setInterval立即运行_Javascript_Loops_Setinterval_Intervals - Fatal编程技术网

JavaScript setInterval立即运行

JavaScript setInterval立即运行,javascript,loops,setinterval,intervals,Javascript,Loops,Setinterval,Intervals,我找到了一个解决方案,可以立即在javascript中运行interval,而不必等待第一次“超时” 但问题是这个解决方案不起作用,像这样的建筑吗 (function () { window.Banner = { doMagic: function () { setInterval(function magic() { console.log('magic'); return mag

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

但问题是这个解决方案不起作用,像这样的建筑吗

(function () {
    window.Banner = {

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

Banner.doMagic();
我尝试返回Banner方法,命名并返回,但没有成功。 关键是在实际构造中要复杂得多,所以我不能将它重写为“return setTimeout”解决方案,正如广泛提供的那个样,所以找到这个解决方案中我做错了什么是非常完美的


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

//使用函数执行任务。
函数doTask(){
console.log(“…”);
}
//第一次执行任务。
doTask();
//在间隔时间内完成任务。

设置间隔(doTask,2500)也许最合适的方法是将整个回调置于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);
}

如果将括号添加到下面的代码部分,则会执行此操作

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

var hello=function(){
写('hello…');
};
setInterval(你好,1000);

你好如果要跳过第一个间隔,请创建一个闭包。所以,它看起来是这样的:
setTimeout(函数hello(){return function(){[code here]};}(),250)
    doMagic: function () {
        setInterval(function magic() {
            console.log('magic');
            return magic;
        }(), 2500);                   // added them here
    }