JS:函数的执行顺序

时间:2016-01-03 15:47:01

标签: javascript angularjs asynchronous callback

我是一名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服务,我们也有区别吗?

1 个答案:

答案 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)