Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setTimeout和setInterval不同_Javascript - Fatal编程技术网

Javascript setTimeout和setInterval不同

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和setInterval(设置超时和设置间隔)例如,当UI进程运行时,长时间运行的函数之间有什么区别

  setTimeout(function(){
    /* Some long block of code... */
  }, 10);

  setInterval(function(){
    /* Some long block of code... */
  }, 10);

如果执行时间较长,则执行时间大于setTimeout或setInterval以设置时间

setTimeout运行一次,并且在您

  • 只想跑一次
  • 或者每次调用的运行时是可变的 需要按顺序打电话吗
  • setInterval将永远运行,直到调用clearInterval取消

    所以,对于长时间运行的进程,最好使用setTimeout,然后让setTimeout处理程序再次调用setTimeout以保持循环运行

    编辑
    设置间隔的问题是,如果运行时间超过10毫秒(在您的情况下),那么下一个调用可能会被丢弃。

    setTimeout运行一次,在您

  • 只想跑一次
  • 或者每次调用的运行时是可变的 需要按顺序打电话吗
  • setInterval将永远运行,直到调用clearInterval取消

    所以,对于长时间运行的进程,最好使用setTimeout,然后让setTimeout处理程序再次调用setTimeout以保持循环运行

    编辑
    设置间隔的问题是,如果运行时间超过10毫秒(在您的情况下),则下一个呼叫可能会中断。

    要回答您的另一个问题,除了前面提到的问题外没有区别,两者的优先级相同。

    要回答您的另一个问题,除了前面提到的问题外没有区别,两者的优先级相同。

    间隔周期性运行,超时在一段时间后运行一次。如果
    setInterval
    长代码块花费的时间长于间隔,则使用
    setInterval
    时可能会出现争用情况。如果代码可能需要一段时间,最好使用
    setTimeout
    ,在长代码完成后启动下一个计时器。@user1689607 javascript是单线程的,在前一个调用完成之前,不会发生后续调用。时间间隔过短可能会占用所有资源,因此浏览器会停止响应。@RobG:对,这就是我的观点。可能“竞态条件”是错误的术语。间隔周期性运行,超时在一段时间后运行一次。如果
    长代码块
    花费的时间长于间隔,则使用
    setInterval
    时可能会出现竞态条件。如果代码可能需要一段时间,最好使用
    setTimeout
    ,在长代码完成后启动下一个计时器。@user1689607 javascript是单线程的,在前一个调用完成之前,不会发生后续调用。时间间隔过短可能会占用所有资源,因此浏览器会停止响应。@RobG:对,这就是我的观点。也许“比赛条件”是个错误的术语。