Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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如何设置间隔和设置超时';螺纹';作品 让我们考虑一下这样的HTML: <div class="my-class"></div>_Javascript_Jquery_Settimeout_Setinterval_Timing - Fatal编程技术网

javascript如何设置间隔和设置超时';螺纹';作品 让我们考虑一下这样的HTML: <div class="my-class"></div>

javascript如何设置间隔和设置超时';螺纹';作品 让我们考虑一下这样的HTML: <div class="my-class"></div>,javascript,jquery,settimeout,setinterval,timing,Javascript,Jquery,Settimeout,Setinterval,Timing,发生的情况是: 我在上切换额外的类。我的类每次10毫秒 我有一些范围,当我确定时,我在一些项目中添加了额外的类 而不是在相同的范围内我正在做一些需要更多时间的动作 小于10ms 现在我可以确定我的物品仍然有我在当前版本中添加的类吗 范围? 若我可以肯定的话——这是否意味着interval正在等待我的作用域完成,即使从上一个interval经过的时间超过了它应该等待的时间?如果某个单作用域所需时间是间隔时间的100倍,该怎么办 如果我不能确定-这是否意味着区间操作可以在我的范围代码的中间触发

发生的情况是:

  • 我在
    上切换
    额外的类
    。我的类
    每次
    10毫秒
  • 我有一些
    范围
    ,当我确定时,我在一些项目中添加了
    额外的类
  • 而不是在相同的
    范围内
    我正在做一些需要更多时间的动作 小于
    10ms
  • 现在我可以确定我的物品仍然有我在当前版本中添加的类吗
    范围

若我可以肯定的话——这是否意味着interval正在等待我的作用域完成,即使从上一个interval经过的时间超过了它应该等待的时间?如果某个单作用域所需时间是间隔时间的100倍,该怎么办

如果我不能确定-这是否意味着区间操作可以在我的范围代码的中间触发?< /P>

// (A)
var t = $(this).addClass("extra-class"); //I'm sure I've added extra-class

// (B)
// Some long action here that could take more than 10ms
...

// (C)
// can I still be sure now that "this" still has class "extra-class"?
对。由于JavasScript是单线程的,因此只有一个线程运行
A
B
,然后运行
C
。在当前执行的代码完成之前,不会执行其他JavaScript代码


即使您设置了一个
setInterval
,以便在给定时间执行一个函数,该函数也只有在单个线程空闲时才会按时运行。否则,它将不得不等待单个线程完成其他所有操作。

是。JS是单线程的,所以一次只运行一个函数。一个函数不可能在另一个函数的“中间”运行。请参见此处:
// (A)
var t = $(this).addClass("extra-class"); //I'm sure I've added extra-class

// (B)
// Some long action here that could take more than 10ms
...

// (C)
// can I still be sure now that "this" still has class "extra-class"?