最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript 操作宏任務與微任務

 更新時間:2021年06月25日 11:08:35   作者:火腿腸燒烤大賽冠軍  
這篇文章主要介紹了JavaScript 操作宏任務與微任務,簡要說明了有關定時器和具體的代碼實現(xiàn),希望對你有所幫助

宏任務與微任務

  • javaScript是單線程語言(如果多線程dom會瘋掉)
  • 所以在同一時間只能執(zhí)行一個任務,稱為主線程,用來執(zhí)行同步任務
  • 同時還有兩個任務列表用于存放異步任務,宏任務、微任務
  • 執(zhí)行順序為:主線程=>微任務=>宏任務

有關定時器

  1. 定時器模塊,到達時間點將其放入宏任務隊列
  2. 如果主線程沒有任務則執(zhí)行,如果有則等待執(zhí)行完成后再繼續(xù)執(zhí)行
  3. 如果有兩個相同時間的定時器則上面的先執(zhí)行下面的后執(zhí)行
  4. 如果兩個時間不同的定時器則時間短的先執(zhí)行時間長的后執(zhí)行

注意點:

  • 定時器的⏲是在定時器模塊中完成的,完成后就和普通異步任務一樣了,
  • 時間方面由于主線程實踐過長的原因,有可能會延后


在這里插入圖片描述

有關Promise

  • promise的構造函數為同步任務
  • 執(zhí)行順序永遠為:同步=>微任務=>宏任務
  • 在嵌套代碼中可能出現(xiàn)宏任務中有同步、宏任務、微任務,這時將他們放到下一次執(zhí)行中的隊列/主線程等待執(zhí)行
setTimeout(() => {
    console.log("定時器");
    setTimeout(() => {
      console.log("timeout timeout");
    }, 0);
    new Promise(resolve => {
      console.log("settimeout Promise");
      resolve();
    }).then(() => {
      console.log("settimeout then");
    });
  }, 0);
  new Promise(resolve => {
    console.log("Promise");
    resolve();
  }).then(() => {
    console.log("then");
  });
  console.log("ssss");

執(zhí)行順序:Promise=>ssss=>then=>定時器=>settimeout Promise=>settimeout then=>timeout timeout

DOM渲染任務

瀏覽器渲染:CSS+DOM執(zhí)行遇到js優(yōu)先執(zhí)行js
可以把js盡量放在下面:避免白屏

任務共享內存

任務不會同時執(zhí)行,會一個一個的被調度,他們共享內存

Promise微任務處理復雜業(yè)務

使用promise可以將任務變成異步任務使其不影響同步任務的執(zhí)行

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

相關文章

最新評論

武宣县| 滨州市| 临西县| 湘乡市| 大竹县| 积石山| 容城县| 镇赉县| 五原县| 搜索| 马公市| 四子王旗| 佛冈县| 浦江县| 卢湾区| 葫芦岛市| 盐池县| 麦盖提县| 大方县| 广汉市| 监利县| 阿坝| 喜德县| 舟山市| 宜川县| 万宁市| 岢岚县| 新津县| 金山区| 曲靖市| 东光县| 米易县| 酉阳| 宜昌市| 保山市| 正定县| 化州市| 莎车县| 洞头县| 民勤县| 南昌市|