亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Macrotasks 和 Microtasks

SimonMa / 2982人閱讀

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

基本知識(shí)

棧:先進(jìn)后出
函數(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出棧 === 》先進(jìn)后出

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

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

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

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

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

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

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

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

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

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

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

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/98077.html

相關(guān)文章

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

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

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

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

    FreeZinG 評(píng)論0 收藏0
  • JS異步筆試題

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

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

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

    android_c 評(píng)論0 收藏0
  • 前端周記20190211-20190215

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

    loonggg 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<