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"?