JS事件迴圈,了解一下

2021-09-13 17:04:37 字數 909 閱讀 5028

在理解事件迴圈之前,我總會遇到一些奇奇怪怪的問題:比如明明已經調介面拿到了資料,可是跟在調資料之後的操作卻沒有正常執行;又或者不知道為啥,**裡非得加個settimeout才能正常跑通;特別是在運用promise的時候,更是有各種問題百思不得解。遇上問題要解決,更要知道問題產生的原因,這樣才能hold住全場!

廢話不多說了,先來看一段**

console.log('start');

settimeout(function(),0);

new promise(function(resolve,reject),200);

resolve()

}).then(function());

settimeout(function(),0);

console.log('end');

結果是start resolve end then settimeout1 settimeout3 settimeout2

在分析結果之前,我先來科普幾個概念,這些概念的表述不一定與標準完全對應,但是可以幫助你更容易理解js的事件機制

我們知道,js是單執行緒的,這就是說,只有乙個主線程,主線程會自上而下依次執行呼叫棧中的事件。任務佇列中的**被載入到函式呼叫棧中去執行。當前的巨集任務佇列中的**執行完畢後,會執行本次巨集任務佇列中分發到微任務佇列中的**。然後執行下乙個巨集任務佇列中的**,依次迴圈。

這裡要提一點容易誤解的地方,settimeout函式本身,其實是立即執行的,它內部的任務,才會被分發到任務佇列中延時執行。

作為乙個前端菜鳥,希望得到各位大神的批評指正!

js解析順序了解一下??

我們在學習一種新事物的時候,總是知其然,而不知其所然。有些人會 到底,有一些人會得過且過。好了,開場白結束,直接進入正題。js不像c語言那樣只要編譯一次之後成.exe檔案之後就不用在編譯可以直接使用了,js是一種解釋型語言,就像你出國旅遊,有乙個人為你翻譯別人的 話一樣,別人說一句,你的翻譯就翻譯一...

了解一下NTLM

ntlm 在客戶機與伺服器之間提供身份認證的安全包。ntlm 身份驗證協議 是 質詢 應答身份驗證協議,是windows nt 4.0 及其早期版本中用於網路身份驗證的預設協議。windows 2000 中仍然支援該協議,但它不再是預設的。ntlm身份驗證過程 ntlm 是用於 windows nt...

了解一下 display flex

一 display flex flex 是flexuble box的縮寫,意為 彈性盒子 用來為盒狀模型提供最大的靈活性.任何乙個容器都可以指定為flex布局.box 行內元素也可以使用flex布局.box webkit核心的瀏覽器,必須加上 webkit box 注意為父級設計flex布局以後,子...