成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Macrotasks 和 Microtasks

SimonMa / 2941人閱讀

摘要:基本知識棧先進后出函數(shù)調(diào)用函數(shù)調(diào)用函數(shù)。而真正的值依然存在中,然后由垃圾回收器自動的清理回收。異步任務(wù)是由瀏覽器執(zhí)行的。當(dāng)任務(wù)執(zhí)行完之后,瀏覽器會將任務(wù)執(zhí)行的結(jié)果和實現(xiàn)定義的回調(diào)函數(shù)放入主線程中。

基本知識

棧:先進后出
函數(shù)a調(diào)用函數(shù)b,b調(diào)用函數(shù)c。執(zhí)行函數(shù)a,a入棧,a調(diào)用b, b入棧, b調(diào)用c,c入棧,c執(zhí)行,返回結(jié)果,彈出棧,依次類推,最后a出棧 === 》先進后出

指針:當(dāng)函數(shù)執(zhí)行完畢后

基本數(shù)據(jù)類型會從 stack 中彈出

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

異步任務(wù)是由瀏覽器執(zhí)行的。當(dāng)任務(wù)執(zhí)行完之后,瀏覽器會將任務(wù)執(zhí)行的結(jié)果和實現(xiàn)定義的回調(diào)函數(shù)放入主線程中。所以當(dāng)主線程任務(wù)阻塞的時候,任務(wù)隊列還是可以正常進行的。

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

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

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

執(zhí)行順序
在同一輪執(zhí)行中,micro tasks優(yōu)先級比macro tasks高

在執(zhí)行同步任務(wù)過程中,碰到了macro tasks或者micro tasks,將其放入相對應(yīng)的棧中。

先將所有的同步任務(wù)執(zhí)行完

查看micro tasks,里面是否有任務(wù),有的話,執(zhí)行完所有的任務(wù)。

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

micro tasks執(zhí)行完一個后,重復(fù)步驟1,2,3,4。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98077.html

相關(guān)文章

  • 瀏覽器環(huán)境下的microtaksmacrotasks

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

    econi 評論0 收藏0
  • 瀏覽器環(huán)境下的microtaksmacrotasks

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

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

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

    Tangpj 評論0 收藏0
  • js的事件循環(huán)

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

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

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

    loonggg 評論0 收藏0

發(fā)表評論

0條評論

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