js是單執行緒的,所以執行任務採用同步,非同步的方式進行,執行過程是如下。
也就是同步任務全部執行完成,再執行非同步任務。
非同步任務裡面又分為巨集任務和微任務。
執行順序如下圖
也就是巨集任務多次執行,微任務一次執行。巨集任務先執行乙個,微任務全部執行,再執行剩餘的巨集任務
巨集任務中執行優先順序
微任務中優先順序
再次總結就是主任務執行後,執行微任務,再執行settimeout,setinterval,setimmediate
settimeout(func(){},0),意思是同步任務執行完成後,主線程棧空後,然後再執行,但是主線程一直為空,由於機制問題,還是最小為4ms。
**示例1:
console.log("巨集任務優先順序最高執行")
JavaScript 事件執行順序
console.log 1 var promise new promise resolve promise.then val console.log val settimeout 0 console.log 5 12 534遇到巨集任務,先執行巨集任務,將巨集任務放入event queue,然後再執...
javascript事件總結
onabort 影象載入被中斷 onblur 失去焦點 onclick 滑鼠單擊某個物件 onchange 使用者改變內容 ondbclick 滑鼠雙擊某個物件 onerror 當載入文件或物件時發生某個錯誤 onfocus 獲得焦點 onkeydown 鍵盤的鍵被按下 onkeypress 鍵盤的...
JavaScript事件委託
js事件處理程式 首先,為什麼要用事件委託,用一段 解釋下 如上面 如果要新增事件處理程式,我們一般做法是,給list1 list2 list3這個3個li元素分別新增事件處理程式,但是有沒有想過,如果元素很多呢,我們還是一直用這樣的方法新增嗎?當然是不可能的,這樣子,非累死程式設計師不可 這個時候...