我找到了一个在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方法,命名并返回,但没有成功。 要点是在实际构造中要复杂得多,所以我不能将其重写为"返回setTimeout"解决方案,广泛提供,所以找到我错误的解决方案真的很完美。
答案 0 :(得分:4)
也许最合适的方法是在setInterval调用之外进行整个回调并将其放在一个单独的变量中:
(function () {
window.Banner = {
doMagic: function () {
var magic = function() {
console.log('magic');
};
setInterval(magic, 2500);
magic();
}
}
})();
Banner.doMagic();
效果与您的第一个代码相同,但这样您的代码就更清晰了。
答案 1 :(得分:3)
您不再在第二个代码段中自行执行该功能。您需要将其更改为以下内容:
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);
}
答案 2 :(得分:1)
在您的代码中,无法执行所需的任务,而是遵循以下方法:
// Use function to perform the task.
function doTask () {
console.log("...");
}
// Perform task for the first time.
doTask();
// On interval do task.
setInterval(doTask, 2500);

答案 3 :(得分:1)
如果将括号添加到下面的代码部分,则
doMagic: function () {
setInterval(function magic() {
console.log('magic');
return magic;
}(), 2500); // added them here
}
答案 4 :(得分:1)
试试这个例子
var hello = function() {
document.write('hello... ');
};
setInterval(hello, 1000);
hello();