Javascript 强制setInterval转到循环中的下一步
是否可以强制Javascript 强制setInterval转到循环中的下一步,javascript,node.js,Javascript,Node.js,是否可以强制setInterval像这样转到下一步 global.timers = [] ; var index = global.timers.length ; global.timers[index] = setInterval(()=>{ // ... },15000); // pseudo code if (event1 occured) global.timers[x].step++ // Don't wait for remained time a
setInterval
像这样转到下一步
global.timers = [] ;
var index = global.timers.length ;
global.timers[index] = setInterval(()=>{
// ...
},15000);
// pseudo code
if (event1 occured)
global.timers[x].step++ // Don't wait for remained time and go to next tick
您可以将id存储在计时器数组中并提取事件处理程序函数,这样您就可以更好地控制何时调用事件处理程序
function coolEventHandler () {
console.log('handling cool event');
}
timers[0] = { name: 'coolEvent', id: setInterval(coolEventHandler, 15000) };
if('coolEvent') {
// find the correct timer
timer = timers.find(t => t.name === 'coolEvent');
// stop the timer so the callback is never invoked
// you probably want to remove it from the global timers array here too.
clearInterval(timer.id);
// call the handler directly
coolEventHandler();
}
您可以简单地清除间隔并再次创建它
global.timers = [] ;
var index = global.timers.length ;
global.timers[index] = setInterval(fn,15000);
// pseudo code
if (event1 occured) {
clearInterval(global.timers[x]);
global.timers[index] = setInterval(fn,15000);
}
function fn() {
}
似乎
global.timer
没有step
属性。不,这是不可能的。您可以设置一个变量并在迭代回调中使用显式测试来执行这样的控制,但机制本身只能启动和停止。通过“转到下一个勾号”,OP是否意味着停止计时器,运行函数,然后再次启动计时器?就像停止计时器,做任何中间任务,然后继续间隔?@Blundering哲学家想象一下,我需要向某人发送报价,我会等待一段时间,等待他的反应,如果他/她拒绝报价,我想发送给另一个人,但不要等待剩余的时间。