关于javascript运行时行为和间隔 当有一个间隔方法运行后台时,是否会导致当前函数在中间停止,去做间隔方法,然后返回到当前函数?
例如:关于javascript运行时行为和间隔 当有一个间隔方法运行后台时,是否会导致当前函数在中间停止,去做间隔方法,然后返回到当前函数?,javascript,google-chrome,setinterval,Javascript,Google Chrome,Setinterval,例如: setInterval(bar, 1000); function foo(){ a(); b(); c(); } foo(); 例如,当到达b()时,去执行bar或bar是否可能仅在当前功能(foo)完成后执行 PS:我在问它在Chrome上是如何工作的。不,这是不可能的。间隔被添加到事件循环(队列)中,并且只有在调用堆栈为空时才会从该事件队列中拾取新项。这意味着foo应该在从队列处理新项目之前完成执行。此外,不仅是通过interval添加的函数在foo完成
setInterval(bar, 1000);
function foo(){
a();
b();
c();
}
foo();
例如,当到达b()
时,去执行bar
或bar
是否可能仅在当前功能(foo
)完成后执行
PS:我在问它在Chrome上是如何工作的。不,这是不可能的。间隔被添加到事件循环(队列)中,并且只有在调用堆栈为空时才会从该事件队列中拾取新项。这意味着
foo
应该在从队列处理新项目之前完成执行。此外,不仅是通过interval添加的函数在foo
完成之前不会执行,还有其他所有事情,如UI事件和网络请求回调
这是一个很好的解释,解释了这个队列是什么。所以基本上js中的每个函数调用都是阻塞的。这取决于你所说的“阻塞”是什么意思?和线程相比,什么是阻塞?阻塞函数不会让其他事情发生,直到它完成,比如C或C++中的一些输入函数。@库哈库,是的,在这个意义上,它们是阻塞的。