Javascript 更改函数内的全局变量,以更改setInterval';s第二参数

Javascript 更改函数内的全局变量,以更改setInterval';s第二参数,javascript,setinterval,Javascript,Setinterval,我有一个名为interval的全局变量,我需要在函数中将这个全局变量更改为5000,因此在等待1秒后,setInterval函数现在将等待5秒。但是,当我尝试下面的代码时,它每次执行时只等待1秒 var timeToWait1 = 1000; var timeToWait2 = 5000; var interval = timeToWait1; setInterval(function(){ waitFunction () }, interval); function waitFunctio

我有一个名为interval的全局变量,我需要在函数中将这个全局变量更改为5000,因此在等待1秒后,setInterval函数现在将等待5秒。但是,当我尝试下面的代码时,它每次执行时只等待1秒

var timeToWait1 = 1000;
var timeToWait2 = 5000;
var interval = timeToWait1;

setInterval(function(){ waitFunction () }, interval);

function waitFunction() {
interval = timeToWait2;
} //end of function waitFunction()

间隔设置为一次且无法更改,您需要超时

var timeToWait1=1000;
var timeToWait2=5000;
设置超时(waitFunction,timeToWait1);
函数waitFunction(){
log('waitFunction called');
设置超时(waitFunction,timeToWait2);

}
一旦间隔开始,您就不能更改它使用的持续时间。您必须停止该间隔,并以新的持续时间重新开始

让其有效;
让makeInterval=duration=>{
console.log('making a new interval');
intervalId=设置间隔(waitFunction,duration);
};
makeInterval(1000);
函数waitFunction(){
clearInterval(intervalId);
log('waitFunction running');
makeInterval(5000);

}
您需要使用
clearInterval
然后再次使用
setInterval
初始化。或者您可以使用
setTimeout
来代替。您需要清除lastIntervalId并使用所需的值启动一个新的间隔。现在清除,对
setInterval()
的调用将创建一次计划任务,该任务将按给定的间隔连续执行。您最好使用
setTimeout()
。它是否先执行waitFunction中的所有代码,然后再将计时器设置为等待5秒?或者它是同时执行的?@frosty否,该函数在1秒后首先被调用,然后每5秒递归调用一次。请随意运行代码并查看控制台输出!对,但是如果waitFunction中有其他代码,例如,var number=1;在等待5秒再次运行之前,是否先将数字设置为1?或者它会同时执行吗?@frosty是的,每次调用时,所有语句都会运行,然后在完成所有操作后,它会在5秒钟内安排另一次调用。@frosty请注意,
setTimeout
不是阻塞函数,它会立即返回。