Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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运行时行为和间隔 当有一个间隔方法运行后台时,是否会导致当前函数在中间停止,去做间隔方法,然后返回到当前函数?_Javascript_Google Chrome_Setinterval - Fatal编程技术网

关于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++中的一些输入函数。@库哈库,是的,在这个意义上,它们是阻塞的。