JavaScript setInterval immediately run

£可爱£侵袭症+ 提交于 2019-12-02 06:39:40

Perhaps the most proper way to do it would be to take the whole callback outside of the setInterval call and put it in a separate variable:

(function () {
    window.Banner = {

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

Banner.doMagic();

The effect is the same as your first code, but this way your code is a little cleaner.

Your no longer self-executing the function in your 2nd code snippet. You need to change this to the following:

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

I agree with others though, this isn't the cleanest way to do this and isn't very obvious to the next developer who comes along. I recommend storing the function in a variable, executing it immediately and then running it in the setInterval also:

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

In your code there is no way to perform the required task, instead follow the below approach:

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

If you add the parenthesis to the below code part it does

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

Try this example

var hello = function() {
  document.write('hello... ');
};
setInterval(hello, 1000);
hello();
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!