国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Macrotasks 和 Microtasks

SimonMa / 2933人閱讀

摘要:基本知識棧先進后出函數調用函數調用函數。而真正的值依然存在中,然后由垃圾回收器自動的清理回收。異步任務是由瀏覽器執行的。當任務執行完之后,瀏覽器會將任務執行的結果和實現定義的回調函數放入主線程中。

基本知識

棧:先進后出
函數a調用函數b,b調用函數c。執行函數a,a入棧,a調用b, b入棧, b調用c,c入棧,c執行,返回結果,彈出棧,依次類推,最后a出棧 === 》先進后出

指針:當函數執行完畢后

基本數據類型會從 stack 中彈出

對象、數組的值是存在于 heap(堆) 中的,stack 只彈出指針了他們對應的指針。而真正的值依然存在 heap 中,然后由垃圾回收器自動的清理回收。

異步任務是由瀏覽器執行的。當任務執行完之后,瀏覽器會將任務執行的結果和實現定義的回調函數放入主線程中。所以當主線程任務阻塞的時候,任務隊列還是可以正常進行的。

macro tasks 和 micro tasks 分類
沒有找到很官方的定義,這個與瀏覽器引擎相關,看瀏覽器引擎怎么定義任務的分類,以下是比較普遍的分類

macro tasks: 定時器、http、IO操作(setTimeout, setInterval, setImmediate, I/O, UI rendering)

micro tasks: process.nextTick, Promises, Object.observe(廢棄), MutationObserver

執行順序
在同一輪執行中,micro tasks優先級比macro tasks高

在執行同步任務過程中,碰到了macro tasks或者micro tasks,將其放入相對應的棧中。

先將所有的同步任務執行完

查看micro tasks,里面是否有任務,有的話,執行完所有的任務。

micro tasks執行過后,查看macro tasks,查看里面是否有任務,如果有,執行第一個放入的任務。

micro tasks執行完一個后,重復步驟1,2,3,4。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98077.html

相關文章

  • 瀏覽器環境下的microtaksmacrotasks

    摘要:的回調函數正是處于隊列之中。將看做會導致性能問題,回調函數可能會因為渲染等相關產生不必要的延后。瀏覽器是怎么出錯的和在兩次點擊操作之間運行完成了所有的,就比如的回調函數所展示的,但是似乎有不同的排序算法。 帶有可視代碼執行順序的原文鏈接https://jakearchibald.com/201...,此篇文字并非其完整翻譯,加入了一部分自己的理解,比如將其中的task替換為macrot...

    econi 評論0 收藏0
  • 瀏覽器環境下的microtaksmacrotasks

    摘要:的回調函數正是處于隊列之中。將看做會導致性能問題,回調函數可能會因為渲染等相關產生不必要的延后。瀏覽器是怎么出錯的和在兩次點擊操作之間運行完成了所有的,就比如的回調函數所展示的,但是似乎有不同的排序算法。 帶有可視代碼執行順序的原文鏈接https://jakearchibald.com/201...,此篇文字并非其完整翻譯,加入了一部分自己的理解,比如將其中的task替換為macrot...

    FreeZinG 評論0 收藏0
  • JS異步筆試題

    摘要:分析題目先執行微任務后執行宏任務因此結果為按照這個思路做以下題目做出如下更改運行結果為更改如下更改如下運行結果為運行結果為運行結果為參考自 參考自https://github.com/Advanced-F... 以下是一道異步的筆試題,寫出運行結果: async function async1() { console.log(async1 start); await a...

    Tangpj 評論0 收藏0
  • js的事件循環

    摘要:但是事件循環一般會在主線程中任務執行完成之后執行。所以,上面函數的調用棧過程如下總結的事件循環部分,內容應該算是全部闡述完全了。 前言 還記得那些年面試官問你的定時器的原理嗎?還有呢?Promise的原理呢?原理、原理、原理,問的我們懷疑人生。 為了下次不再懵逼,今天,我們來了解一下Event Loop的概念。我們的初衷是真正的了解和掌握它,了解整體JavaScript的運行機制。至少...

    android_c 評論0 收藏0
  • 前端周記20190211-20190215

    摘要:任務隊列是一個事件隊列,只要指定過回調函數的事件在事件發生時就會進入任務隊列。回調函數會被主線程掛起來的代碼,異步任務必須指定回調函數。 1、靜態公有方法 (function(){ var privateVariable=10; function privateFunction(){ return false; } MyObject=fu...

    loonggg 評論0 收藏0

發表評論

0條評論

SimonMa

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<