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

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

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

分類

js中的任務,大致分為2類,一類是同步任務,另一類是異步任務。而異步任務,又分為宏任務和微任務,這兩個任務是兩個隊列,所以是先進先出的。

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

異步任務指的是,不進入主線程、而進入"任務隊列"的任務,只有等主線程任務執(zhí)行完畢,"任務隊列"開始通知主線程,請求執(zhí)行任務,該任務才會進入主線程執(zhí)行

宏任務

主代碼塊、setTimeout、setInterval等

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

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

宏任務是主流,當js開始被執(zhí)行的時候,就是開啟一個宏任務,在宏任務中執(zhí)行一條一條的指令

宏任務可以同時有多個,但會按順序一個一個執(zhí)行;

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

微任務

Promise、async/await等

需要注意的是,promise里的then才會被加入微任務,它的resolve是同步里的

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

為什么

為什么有了宏任務,還會有微任務存在?

因為宏任務太占用性能,當需要一些較早就準備好的方法,排在最后才執(zhí)行的時候,又不想新增一個宏任務,那么就可以把這些方法,一個一個的放在微任務隊列里面,在這個宏任務中的代碼執(zhí)行完后,就會執(zhí)行微任務隊列。

案例

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

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

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

結(jié)果:

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

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

相關文章

  • Bootstrap免費字體和圖標網(wǎng)站(值得收藏)

    Bootstrap免費字體和圖標網(wǎng)站(值得收藏)

    在這篇內(nèi)容中,我們把這套框架上的免費字體圖標做了個整合(當然,以后還會不斷的更新)。大家對bootstrap免費字體圖標有需要的話,可以參考本教程
    2017-03-03
  • 使用JavaScript渲染頁面的方法詳解

    使用JavaScript渲染頁面的方法詳解

    本文主要介紹了使用JavaScript渲染頁面的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,感興趣的小伙伴下面隨著小編來一起來學習吧
    2023-12-12
  • javascript算法學習(直接插入排序)

    javascript算法學習(直接插入排序)

    假設待排序的記錄存放在數(shù)組R[1..n]中。初始時,R[1]自成1個有序區(qū),無序區(qū)為R[2..n]。從i=2起直至i=n為止,依次將R[i]插入當前的有序區(qū)R[1..i-1]中,生成含n個記錄的有序區(qū)。
    2011-04-04
  • JavaScript通過join函數(shù)連接數(shù)組里所有元素的方法

    JavaScript通過join函數(shù)連接數(shù)組里所有元素的方法

    這篇文章主要介紹了JavaScript通過join函數(shù)連接數(shù)組里所有元素的方法,實例分析了javascript中join函數(shù)的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • JS彈出對話框?qū)崿F(xiàn)方法(三種方式)

    JS彈出對話框?qū)崿F(xiàn)方法(三種方式)

    這篇文章主要介紹了JS彈出對話框?qū)崿F(xiàn)方法,結(jié)合實例形式分析了三種方式,包括alert、confirm及prompt,非常簡單實用,需要的朋友可以參考下
    2015-12-12
  • javascritp添加url參數(shù)將參數(shù)加入到url中

    javascritp添加url參數(shù)將參數(shù)加入到url中

    javascritp添加url參數(shù)方法,將參數(shù)加入到url中,如果原來url中有則覆蓋,下面是示例代碼,感興趣的朋友可以參考下
    2014-09-09
  • 前端JavaScript實現(xiàn)文件壓縮的全面優(yōu)化指南

    前端JavaScript實現(xiàn)文件壓縮的全面優(yōu)化指南

    JavaScript文件大小直接影響網(wǎng)頁加載速度和用戶體驗,本文將詳細介紹從基礎到高級的各種JavaScript壓縮優(yōu)化技術,小伙伴可以根據(jù)需求進行選擇
    2025-04-04
  • 微信小程序傳值以及獲取值方法的詳解

    微信小程序傳值以及獲取值方法的詳解

    這篇文章主要介紹了微信小程序傳值以及獲取值方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 利用pixi.js制作簡單的跑酷小游戲

    利用pixi.js制作簡單的跑酷小游戲

    PixiJS 提供一個適用于所有設備的快速輕量級 2D 庫。PixiJS 具有完整的 WebGL 支持,并且可以無縫地回退到 HTML5 的畫布。 本文將使用pixi.js制作簡單的跑酷小游戲,感興趣的可以嘗試一下
    2022-07-07
  • javascript實現(xiàn)div浮動在網(wǎng)頁最頂上并帶關閉按鈕效果實例

    javascript實現(xiàn)div浮動在網(wǎng)頁最頂上并帶關閉按鈕效果實例

    我們有時會看到有些網(wǎng)站最頂部一直會跟著我們滾動而滾動了,這種方法其實很簡單,下面我來給大推薦一個javascript實現(xiàn)div浮動在網(wǎng)頁最頂上并帶關閉按鈕效果
    2013-08-08

最新評論