1. 程式人生 > >setTimeout時間設定為0

setTimeout時間設定為0

        這就需要搞清楚一個很重要的概念:js是單執行緒的,單執行緒就意味著,所有任務需要排隊,前一個任務結束,才會執行後一個任務。如果前一個任務耗時很長,後一個任務就不得不一直等著。

         setTimeout(fn,0)的含義是,指定某個任務在主執行緒最早可得的空閒時間執行,也就是說,儘可能早得執行。它在"任務佇列"的尾部新增一個事件,因此要等到同步任務和"任務佇列"現有的事件都處理完,才會得到執行。

setTimeout(function(){
    console.log(1);
}, 0);
console.log(2);
console.log(3);

這樣,這段程式碼輸出結果為2 , 3 ,1

。就得到了解釋,因為setTimeOut設定為0,會在佇列最後新增一個事件,要等待其他任務事件處理完成才會處理,所以 1 才會最後列印;