是否有可能在循环执行块之后调用延迟为0ms setTimeout(function, 0)
的超时函数,或者首先完成包含功能块总是?
setTimeout(function(){ //something in here }, 0);
function myFunction() {
// do something
// loop block
// could timeout = 0 be scheduled to execute here?
// do more things
}
myFunction()
在我的上下文(Angular 2)中,知道Angular' ApplicationRef.tick()
是否可以在我完成操作之前调用数据绑定/组件更改是很有意思的。嵌套循环中的-way绑定属性?
函数调用和所有后续子函数调用是否等同于消息队列中的单个项目,还是分解为每个执行块是消息队列中的单个项目?因此setTimeout(..., 0)
可能在队列中的执行块之间进入?
答案 0 :(得分:2)
不,这是不可能的。您可以将javaScript视为"一个线程" - 任何时间点都只运行一个代码。任何超时都将在当前流程结束后执行。 此外,虽然执行javascript页面变得无响应 - 您无法执行任何操作。
一些示范:
setTimeout(function() { console.log(1) });
var d = new Date();
var i = 0; for(; i < 1e9; i++) {}
console.log(i);
console.log('Passed ' + (new Date() - d));
>> 1000000000
>> Passed ~2000
>> 1