Javascript setTimeout和setInterval不同
setTimeout和setInterval(设置超时和设置间隔)例如,当UI进程运行时,长时间运行的函数之间有什么区别Javascript setTimeout和setInterval不同,javascript,Javascript,setTimeout和setInterval(设置超时和设置间隔)例如,当UI进程运行时,长时间运行的函数之间有什么区别 setTimeout(function(){ /* Some long block of code... */ }, 10); setInterval(function(){ /* Some long block of code... */ }, 10); 如果执行时间较长,则执行时间大于setTimeout或setInterval以设置时
setTimeout(function(){
/* Some long block of code... */
}, 10);
setInterval(function(){
/* Some long block of code... */
}, 10);
如果执行时间较长,则执行时间大于setTimeout或setInterval以设置时间setTimeout运行一次,并且在您
设置间隔的问题是,如果运行时间超过10毫秒(在您的情况下),那么下一个调用可能会被丢弃。setTimeout运行一次,在您
设置间隔的问题是,如果运行时间超过10毫秒(在您的情况下),则下一个呼叫可能会中断。要回答您的另一个问题,除了前面提到的问题外没有区别,两者的优先级相同。要回答您的另一个问题,除了前面提到的问题外没有区别,两者的优先级相同。间隔周期性运行,超时在一段时间后运行一次。如果
setInterval
长代码块花费的时间长于间隔,则使用setInterval
时可能会出现争用情况。如果代码可能需要一段时间,最好使用setTimeout
,在长代码完成后启动下一个计时器。@user1689607 javascript是单线程的,在前一个调用完成之前,不会发生后续调用。时间间隔过短可能会占用所有资源,因此浏览器会停止响应。@RobG:对,这就是我的观点。可能“竞态条件”是错误的术语。间隔周期性运行,超时在一段时间后运行一次。如果长代码块
花费的时间长于间隔,则使用setInterval
时可能会出现竞态条件。如果代码可能需要一段时间,最好使用setTimeout
,在长代码完成后启动下一个计时器。@user1689607 javascript是单线程的,在前一个调用完成之前,不会发生后续调用。时间间隔过短可能会占用所有资源,因此浏览器会停止响应。@RobG:对,这就是我的观点。也许“比赛条件”是个错误的术语。