JavaScript setInterval立即运行
我找到了一个解决方案,可以立即在javascript中运行interval,而不必等待第一次“超时” 但问题是这个解决方案不起作用,像这样的建筑吗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
(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
}