html5 - Javascript單線程中消息隊列的執(zhí)行疑問
問題描述
陸陸續(xù)續(xù)看了一些js單線程,事件循環(huán)和消息隊列的文章,但是有一個疑問是,當event loop消息隊列的時候,假設里面有ajax和settimeout兩個消息,當?shù)莝ettimeout是先進入消息隊列,ajax是后入,但是ajax先回饋結(jié)果了,settimout還沒有,這個時候,event loop應該是先執(zhí)行ajax吧?其實結(jié)合日常開發(fā)我也知道應該是這么回事,但是我看一些文章好像說異步消息隊列也是按順序輪詢執(zhí)行的,但是明明后面的比你先反饋,應該是先執(zhí)行對把?
問題解答
回答1:ajax執(zhí)行完,剩余事件進入 event loop. setTimeout 在延遲的時間結(jié)束時,將參數(shù)里的回掉放入event loop。
推薦你一個網(wǎng)站,在線掩飾event loophttp://latentflip.com/loupe
回答2:這個問題, 說起來比較長, 這里有篇文章, 很長但是建議深讀. Ajax知識體系大梳理 | louis blog當然sf的專欄也是有的: Ajax知識體系大梳理 - 路易斯聊前端如果有不明白的地方, 直接文章底下給我留言就行.
回答3:按照我這兩天看的情況,異步任務只有在完成相關(guān)觸發(fā)條件才會被推入“任務隊列”,等待主線程執(zhí)行完同步任務按照先進先出的順序執(zhí)行“任務隊列”中的任務。
相關(guān)文章:
1. android - NavigationView 的側(cè)滑菜單中如何保存新增項(通過程序添加)2. table表格里面height不能在border和tr里面調(diào)?3. 老師 我是一個沒有學過php語言的準畢業(yè)生 我希望您能幫我一下4. 除了 python2 和 python3,ipython notebook 還可以用哪些內(nèi)核?5. 這段代碼既不提示錯誤也看不到結(jié)果,請老師明示錯在哪里,謝謝!6. 提示語法錯誤語法錯誤: unexpected ’abstract’ (T_ABSTRACT)7. tp5 不同控制器中的變量調(diào)用問題8. html5 - datatables 加載不出來數(shù)據(jù)。9. python - Pycharm一句代碼寫完可以自動補全空格么?10. php7.3.4中怎么開啟pdo驅(qū)動
