js引擎在執行的時候是單執行緒的,這是大家都知道的。我們先來看一段**:
**:console.log('async!');
**:console.log('sync!');
settimeout(
function
(),1000);
大家覺得執行順序是什麼?
輸出:10000-0sync!
async!
settimout run!
從執行可以看出,主程式是一直在向下執行。settimeout和create js都是非同步操作,會被放到主線程的執行佇列的最後,只有主線程空閒了,才會執行非同步佇列裡的內容。
那麼總結一下,哪些操作是非同步操作呢?
1.ajax
2.settimeout/setinternel
3.websocket
4.非同步載入js
5.dom事件、io輸入
能想到的有這些,有漏掉的再補上!
JS之非同步概念
概念 什麼是js非同步 何時需要非同步 1 需要等待的情況 2 在等待過程中不能像alert一樣阻塞程式執行 3 等待的情況需要非同步 使用場景 1 定時任務settimeout,setinterval console.log 100 settimeout function 1000 非同步執行,非...
非同步和同步概念理解
所謂非同步輸入輸出機制,是指在進行輸入輸出處理時,不必等到輸入輸出處理完畢才返回。所以非同步的同義語是非阻塞 none blocking 舉個例子 普通 b s模式 同步 ajax 技術 非同步 同步 提交請求 等待伺服器處理 處理完畢返回 這個期間客戶端瀏覽器不能幹任何事 非同步 請求通過事件觸發...
關於js非同步載入的理解
最近在除錯 的時候想非同步載入js進去,便查了一下js非同步載入的相關知識,不查不知道,一查受益匪淺,平時沒有注意的好多小細節,竟然有如此大的作用。一直以為bigpipe的原理就是非同步載入那麼簡單,其實不然,最近幾年,為了不讓js的載入影響到網頁的可視性,開始嘗試將js放在底部,而不是一味的放在h...