Javascript什么时候会调用回调,会吗?

时间:2014-05-02 14:00:32

标签: javascript asynchronous callback

让我们考虑以下情况:
我有一个函数(Function1)调用另一个函数(Function2)并传递回调函数(Function3) 然后它立即有无限循环,为了逃避回调中的机制,是否会调用回调函数?如何到达console.log('reached here');

var IamTrue = true;
function Function1() {
   Function2(Function3);
   while(IamTrue){ }
   console.log('reached here');
} 

function Function2(f3) {
   setTimeout(f3, 500);
}

function Function3() { 
   IamTrue = false; 
}

1 个答案:

答案 0 :(得分:2)

JavaScript使用单线程运行循环来执行代码;在代码返回的那一刻,它可以安排事件处理,延迟代码执行,AJAX响应等等。

然而,Function1中的代码永远不会结束,因此JavaScript引擎永远不会有机会安排Function2的执行,因此"没有任何事情发生"。