Javascript setTimeout在给定时间内立即执行
有没有办法让Javascript setTimeout在给定时间内立即执行,javascript,settimeout,Javascript,Settimeout,有没有办法让setTimeout立即运行,然后在给定时间再次运行。例如,我希望此updateItemsCache函数在加载时运行,然后每3秒再次运行一次 现在每3秒执行一次。 函数updateItemsCache(){ 设置超时(()=>{ //做事 }, 30000); } 不,只需创建一个函数并在超时前调用一次,在超时内调用一次 function updateItemsCache(){ innerLogic() setTimeout(innerLogic, 30000); } f
setTimeout
立即运行,然后在给定时间再次运行。例如,我希望此updateItemsCache函数在加载时运行,然后每3秒再次运行一次
现在每3秒执行一次。
函数updateItemsCache(){
设置超时(()=>{
//做事
}, 30000);
}
不,只需创建一个函数并在超时前调用一次,在超时内调用一次
function updateItemsCache(){
innerLogic()
setTimeout(innerLogic, 30000);
}
function innerLogic(){
}
如果我正确理解了您的问题,您可以按如下所示构造代码以实现此目的 总之,您可以通过
setTimeout(迭代,3000)以固定的3秒间隔调用函数(即doStuff()
)代码>其中迭代
是一个功能:
- 调用您希望每隔3秒执行的自定义应用程序逻辑
- 安排下一次迭代(即在未来3秒钟内进行)
此模式还确保逻辑立即运行,并且在第一次执行后每隔3秒运行:
constdostuff=()=>{
log(`dostuff at${Date.now()}`);
}
函数updateItemsCache(){
/*
定义调用您的
“东西”逻辑
*/
常量迭代=()=>{
doStuff();
/*
使用setTimeout()计划下一次迭代
在未来3秒时(这将导致
以3秒为间隔重复的迭代)
*/
setTimeout(迭代,3000);
}
/*
开始称为“东西”逻辑的迭代
立即,并重新安排另一个迭代
*/
迭代();
}
updateItemsCache();
以下代码将声明一个函数,该函数包含一个运行函数本身的setTimeout。记住将函数调用作为setTimeout中的最后一件事
那么您所要做的就是调用您的timeoutFunction()
这将确保在调用函数时运行代码(由“//do stuff”输入)。并且,通过调用timeoutFunction,在您想要的延迟(ms)后再次运行
感谢您提供这段代码片段,它可能会提供一些有限的、即时的帮助。A通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请在您的答案中添加一些解释,包括您所做的假设。Sry,添加了解释!
const timeoutFunction = () => {
setTimeout(() => {
//do stuff
timeoutFunction();
}, ms);
}
timeoutFunction();