![](/img/trans.png)
[英]setTimeout function not executing at specific time given in react app
[英]setTimeout executing now and given time
有没有办法让setTimeout
立即运行,然后在给定的时间再次运行。 例如,我希望此 updateItemsCache 函数在加载时运行,然后每 3 秒再次运行一次。
现在它只每 3 秒执行一次。
function updateItemsCache(){ setTimeout(() => { //do stuff }, 30000); }
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout
不,只需创建一个函数并在超时前调用一次,在超时内调用一次
function updateItemsCache(){
innerLogic()
setTimeout(innerLogic, 30000);
}
function innerLogic(){
}
如果我正确理解了您的问题,您可以将代码结构如下所示。
总之,您可以通过setTimeout(iteration, 3000);
每隔 3 秒定期调用一个函数(即doStuff()
setTimeout(iteration, 3000);
其中iteration
是一个函数:
此模式还确保逻辑立即运行,并在第一次执行后的 3 秒间隔内运行:
const doStuff = () => { console.log(`Do stuff at ${Date.now()}`); } function updateItemsCache(){ /* Define iteration function that invokes your "stuff" logic */ const iteration = () => { doStuff(); /* Use setTimeout() to schedule the next iteration at 3 seconds into the future (which will cause the iteration to repeat on 3 second intervals) */ setTimeout(iteration, 3000); } /* Start iteration which calls you "stuff" logic immediately, and reschedules another iteration */ iteration(); } updateItemsCache();
下面的代码将声明一个包含 setTimeout 的函数,该函数本身运行该函数。 请记住将对该函数的调用作为 setTimeout 中的最后一件事。
然后你所要做的就是调用你的 timeoutFunction()。
这将确保您的代码(由“//do stuff”放置)在您调用该函数时运行。 并且,通过调用 timeoutFunction,在您想要的延迟(毫秒)之后再次运行。
const timeoutFunction = () => {
setTimeout(() => {
//do stuff
timeoutFunction();
}, ms);
}
timeoutFunction();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.