[英]Can javascript's 'setInterval' be configured to trigger immediately, and with an interval?
如果我想定期触发事件,我会使用像(coffeescript)这样的东西:
setInterval (() => myFunction()), 300000
但是我经常要立即调用myFunction,然后定期调用。 目前我通过调用setTimeout和setInterval来做到这一点,例如,
setTimeout (() => myFunction()), 0
setInterval (() => myFunction()), 300000
要么
myFunction()
setInterval (() => myFunction()), 300000
可以使用setInterval一步完成此操作吗?
如果你的功能能够自行返回,那么是的。
function myFunction() {
// do some work
return myFunction;
}
setInterval(myFunction(), 300000);
我会让你翻译成CS。
所以现在你调用函数而不是将它传递给setInterval()
。 该函数运行并返回自身,由setInterval()
接收并按照您的预期调用。
我不知道CS,但看起来你可能正在传递一个调用你的函数的匿名函数。
如果是这样,我不确定你为什么这样做,但它确实保证你可以采用这种方法,因为你不需要关心原始的返回值。
function myFunction() {
// do some work
}
setInterval(function() {
myFunction();
return myFunction;
}(), 300000);
如果应该在每个时间间隔运行的匿名函数中做更多工作,那么给函数命名并更改return myFunction;
return callback;
。
function myFunction() {
// do some work
}
setInterval(function callback() {
myFunction();
// some other work
return callback;
}(), 300000);
您可以创建setInterval()
的自定义版本,该版本在开始时调用指定的函数,然后按间隔调用。
// custom version
window.setIntervalCustom = function(_callback, _delay) {
_callback(); // call once
return window.setInterval(_callback, _delay); // at intervals
};
// this will print 1 once at the start and then at intervals of 1000ms
setIntervalCustom(function() { console.log('1'); }, 1000);
注意:自定义函数已在上面重命名,以避免与其他libs / code thiat可能使用原始setInterval()
任何冲突问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.