[英]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”解决方案,因此,发现我对此做错了什么将是非常完美的。
也许最合适的方法是将整个回调移到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.