繁体   English   中英

可以将javascript的'setInterval'配置为立即触发,并且间隔时间?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM