1. 程式人生 > >setTimeout 為0的作用

setTimeout 為0的作用

想要 空閑 通過 解析 異步執行 時間 out 函數變量 函數

js是單線程,你得setTimeout函數雖然時間設置為0,但是也是一個異步,他會在任務池中排隊等待js引擎空閑才執行.

js的執行是單線程的,都需要排隊去執行的,循環在一瞬間就完成了,即使時間是0,也是在排隊。除非你用閉包去解決這個問題,就可以一次輸出你想要的了

跟js的執行機制有關,js是單線程的,同一時間只能做一件事,通過事件輪詢實現異步的執行,直接調用函數變量之類同步執行會進入到執行棧中,按順序執行,所有的異步執行,則會放入執行隊列,在回調接到相應後,插入到執行棧中執行。
setTimeout是個異步執行的回調,在執行隊列中,所以會等所有的for循環任務棧結束後再執行,設置的時間代表當回調執行時,等待多長時間後執行,而不是js解析器讀到這段代碼,等待多長時間執行,所以有時候還會感覺執行時間比給定的時間長。

返回值就像上面所說的是定時器編號,所以一般使用定時器,都會給予一個命名,方便以後清除定時器。

https://segmentfault.com/q/1010000010351840

setTimeout 為0的作用