亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript宏任務(wù)和微任務(wù)區(qū)別介紹

 更新時(shí)間:2022年07月15日 09:48:45   作者:??桃子蘸醬?  
這篇文章主要介紹了JavaScript宏任務(wù)和微任務(wù)區(qū)別介紹,js中的任務(wù),大致分為2類,一類是同步任務(wù),另一類是異步任務(wù)。而異步任務(wù),又分為宏任務(wù)和微任務(wù),這兩個(gè)任務(wù)是兩個(gè)隊(duì)列,所以是先進(jìn)先出的

分類

js中的任務(wù),大致分為2類,一類是同步任務(wù),另一類是異步任務(wù)。而異步任務(wù),又分為宏任務(wù)和微任務(wù),這兩個(gè)任務(wù)是兩個(gè)隊(duì)列,所以是先進(jìn)先出的。

同步任務(wù)指的是,在主線程上排隊(duì)執(zhí)行的任務(wù),只有前一個(gè)任務(wù)執(zhí)行完畢,才能執(zhí)行后一個(gè)任務(wù)。

異步任務(wù)指的是,不進(jìn)入主線程、而進(jìn)入"任務(wù)隊(duì)列"的任務(wù),只有等主線程任務(wù)執(zhí)行完畢,"任務(wù)隊(duì)列"開始通知主線程,請(qǐng)求執(zhí)行任務(wù),該任務(wù)才會(huì)進(jìn)入主線程執(zhí)行

宏任務(wù)

主代碼塊、setTimeout、setInterval等

有些地方會(huì)列出來UI Rendering,說這個(gè)也是宏任務(wù),可是在讀了HTML規(guī)范文檔以后,發(fā)現(xiàn)這很顯然是和微任務(wù)平行的一個(gè)操作步驟

requestAnimationFrame姑且也算是宏任務(wù)吧,requestAnimationFrame,下次頁面重繪前所執(zhí)行的操作,而重繪也是作為宏任務(wù)的一個(gè)步驟來存在的,且該步驟晚于微任務(wù)的執(zhí)行

宏任務(wù)是主流,當(dāng)js開始被執(zhí)行的時(shí)候,就是開啟一個(gè)宏任務(wù),在宏任務(wù)中執(zhí)行一條一條的指令

宏任務(wù)可以同時(shí)有多個(gè),但會(huì)按順序一個(gè)一個(gè)執(zhí)行;

每一個(gè)宏任務(wù),后面都可以跟一個(gè)微任務(wù)隊(duì)列,如果微任務(wù)隊(duì)列中有指令或方法,那么就會(huì)執(zhí)行;如果沒有,則開始執(zhí)行下一個(gè)宏任務(wù),直到所有的宏任務(wù)執(zhí)行完為止。

微任務(wù)

Promise、async/await等

需要注意的是,promise里的then才會(huì)被加入微任務(wù),它的resolve是同步里的

async函數(shù)里遇到await之前的代碼是同步里的,遇到await時(shí),會(huì)執(zhí)行await后面的函數(shù),然后返回一個(gè)promise,把a(bǔ)wait下面的代碼放入微任務(wù),并且退出這個(gè)async函數(shù)。

為什么

為什么有了宏任務(wù),還會(huì)有微任務(wù)存在?

因?yàn)楹耆蝿?wù)太占用性能,當(dāng)需要一些較早就準(zhǔn)備好的方法,排在最后才執(zhí)行的時(shí)候,又不想新增一個(gè)宏任務(wù),那么就可以把這些方法,一個(gè)一個(gè)的放在微任務(wù)隊(duì)列里面,在這個(gè)宏任務(wù)中的代碼執(zhí)行完后,就會(huì)執(zhí)行微任務(wù)隊(duì)列。

案例

console.log('整體script開始。');

setTimeout(()=>{
    console.log('宏任務(wù)setTimeout的回調(diào)函數(shù)。')
})

Promise.resolve().then(function() {
    console.log('微任務(wù)Promise回調(diào)函數(shù)1。')
}).then(function() {
    console.log('微任務(wù)Promise回調(diào)函數(shù)2。')
})
console.log('整體script結(jié)束。')

結(jié)果:

整體script開始。
整體script結(jié)束。
微任務(wù)Promise回調(diào)函數(shù)1。
微任務(wù)Promise回調(diào)函數(shù)2。
宏任務(wù)setTimeout的回調(diào)函數(shù)。

到此這篇關(guān)于JavaScript宏任務(wù)和微任務(wù)區(qū)別介紹的文章就介紹到這了,更多相關(guān)JS宏任務(wù)與微任務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 整理Javascript事件響應(yīng)學(xué)習(xí)筆記

    整理Javascript事件響應(yīng)學(xué)習(xí)筆記

    整理Javascript事件響應(yīng)學(xué)習(xí)筆記,之前一系列的文章是跟我學(xué)習(xí)Javascript,本文就是進(jìn)一步學(xué)習(xí)javascript流程控制語句,希望大家繼續(xù)關(guān)注
    2015-12-12
  • JS本地刷新返回上一頁代碼

    JS本地刷新返回上一頁代碼

    返回上一頁并刷新在此功能有利于用戶的體驗(yàn),是每一個(gè)web開發(fā)人員所必備的一項(xiàng),這篇文章主要介紹了JS本地刷新返回上一頁代碼,感興趣的小伙伴們可以參考一下
    2016-07-07
  • js的閉包的一個(gè)示例說明

    js的閉包的一個(gè)示例說明

    js中 某個(gè)函數(shù)的內(nèi)部函數(shù)在該函數(shù)執(zhí)行結(jié)束后仍然可以訪問這個(gè)函數(shù)中定義的變量,這稱為閉包(Closure)
    2008-11-11
  • 動(dòng)態(tài)加載script文件的兩種方法

    動(dòng)態(tài)加載script文件的兩種方法

    第一種就是利用ajax方式,第二種是,動(dòng)態(tài)創(chuàng)建一個(gè)script標(biāo)簽,設(shè)置其src屬性,通過把script標(biāo)簽插入到頁面head來加載js,感興趣的朋友可以了解下
    2013-08-08
  • 提高javascript效率 一次判斷,而不要次次判斷

    提高javascript效率 一次判斷,而不要次次判斷

    提高javascript效率 一次判斷,而不要次次判斷,學(xué)習(xí)js的朋友可以參考下
    2012-03-03
  • JavaScript實(shí)現(xiàn)函數(shù)緩存及應(yīng)用場景

    JavaScript實(shí)現(xiàn)函數(shù)緩存及應(yīng)用場景

    在JavaScript中,可以通過函數(shù)緩存來提高函數(shù)的執(zhí)行效率,本文就來介紹一下JavaScript實(shí)現(xiàn)函數(shù)緩存及應(yīng)用場景,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 完美實(shí)現(xiàn)js選項(xiàng)卡切換效果(二)

    完美實(shí)現(xiàn)js選項(xiàng)卡切換效果(二)

    這篇文章主要為大家詳細(xì)介紹如何完美實(shí)現(xiàn)js選項(xiàng)卡切換效果,通過設(shè)置定時(shí)器實(shí)現(xiàn)延時(shí)0.5s切換選項(xiàng)卡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • JS實(shí)現(xiàn)數(shù)組扁平化的8種方式總結(jié)

    JS實(shí)現(xiàn)數(shù)組扁平化的8種方式總結(jié)

    數(shù)組扁平化指的是將一個(gè)多層嵌套的數(shù)組,處理成只有一層的數(shù)組,本文為大家整理了8個(gè)常用的JS實(shí)現(xiàn)數(shù)組扁平化的方法,希望對(duì)大家有所幫助
    2023-08-08
  • JS修改css樣式style淺談

    JS修改css樣式style淺談

    分為改變直接樣式,改變className和改變cssText三種,需要的朋友可以參考下
    2013-05-05
  • JS實(shí)現(xiàn)頁面內(nèi)跳轉(zhuǎn)的簡單代碼

    JS實(shí)現(xiàn)頁面內(nèi)跳轉(zhuǎn)的簡單代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)頁面內(nèi)跳轉(zhuǎn)的簡單代碼,需要的朋友可以參考下
    2017-09-09

最新評(píng)論