我是一名Java开发人员并且正在努力理解JS如何在函数内部调用函数。
function mainFunction() {
//some HTTP Call. Callback is done through chaining. (Total execution time: 10s) -> (1)
//let b = some HTTP Call. Callback is assigned to local variable a. (Total execution time: 5s) -> (2)
//console.log("Hi") -- (3)
//Setimeout(500, ......); --(4)
// some very long piece of code - (Execution time: 60s) -- (5)
}
在时间轴中,上述代码的执行顺序是什么?
我们在步骤1和步骤2中有任何不同(等待)吗?
如果这些http回调利用AngularJS $ http服务,我们也有区别吗?
答案 0 :(得分:2)
JavaScript执行的方式是,首先执行同步语句,将异步函数放在队列中。它们以FIFO方式执行。
第1步& 2有ajax(异步)调用,所以它们会被注册但不会被调用。
然后步骤3将打印console.log
作为非异步代码。
在第4步,它只接受代码并通过JavaScript引擎放置在异步队列中。
然后将调用第5步。
到目前为止,我们的异步队列已经Step 1,2 & 4
在第5步执行完成后,编译器会评估放置在异步队列中的function/code
。步骤1,步骤2&然后是步骤4,但根据他们的时间评估,他们的回调将像步骤4(400ms),步骤2(5s)&然后是第1步(10s)