欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript 操作宏任務(wù)與微任務(wù)

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

宏任務(wù)與微任務(wù)

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

有關(guān)定時(shí)器

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

注意點(diǎn):

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


在這里插入圖片描述

有關(guān)Promise

  • promise的構(gòu)造函數(shù)為同步任務(wù)
  • 執(zhí)行順序永遠(yuǎn)為:同步=>微任務(wù)=>宏任務(wù)
  • 在嵌套代碼中可能出現(xiàn)宏任務(wù)中有同步、宏任務(wù)、微任務(wù),這時(shí)將他們放到下一次執(zhí)行中的隊(duì)列/主線程等待執(zhí)行
setTimeout(() => {
    console.log("定時(shí)器");
    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=>定時(shí)器=>settimeout Promise=>settimeout then=>timeout timeout

DOM渲染任務(wù)

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

任務(wù)共享內(nèi)存

任務(wù)不會(huì)同時(shí)執(zhí)行,會(huì)一個(gè)一個(gè)的被調(diào)度,他們共享內(nèi)存

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

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

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

相關(guān)文章

  • 深入分析JSONP跨域的原理

    深入分析JSONP跨域的原理

    這篇文章主要介紹了深入分析JSONP跨域的原理,需要的朋友可以參考下
    2014-12-12
  • JavaScript中的對(duì)象與JSON

    JavaScript中的對(duì)象與JSON

    這篇文章主要介紹了JavaScript中的對(duì)象與JSON,本文講解了定義JSON與javascript對(duì)象、javascript對(duì)象轉(zhuǎn)換為JSON、javascript中解析JSON等內(nèi)容,需要的朋友可以參考下
    2015-07-07
  • JS阻止冒泡事件以及默認(rèn)事件發(fā)生的簡單方法

    JS阻止冒泡事件以及默認(rèn)事件發(fā)生的簡單方法

    這篇文章主要介紹了JS阻止冒泡事件以及默認(rèn)事件發(fā)生的簡單方法,有需要的朋友可以參考一下
    2014-01-01
  • 你必須知道的JavaScript 變量命名規(guī)則詳解

    你必須知道的JavaScript 變量命名規(guī)則詳解

    在編寫代碼的時(shí)候難免涉及到變量的命名問題,不能只要求變量名的語法正確,而忽略了變量命名對(duì)代碼可讀性的影響
    2013-05-05
  • 簡介JavaScript中的getSeconds()方法的使用

    簡介JavaScript中的getSeconds()方法的使用

    這篇文章主要介紹了簡介JavaScript中的getSeconds()方法的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-06-06
  • 簡單了解JavaScript異步

    簡單了解JavaScript異步

    所謂"異步",簡單說就是一個(gè)任務(wù)分成兩段,先執(zhí)行第一段,然后轉(zhuǎn)而執(zhí)行其他任務(wù),等做好了準(zhǔn)備,再回過頭執(zhí)行第二段。比如,有一個(gè)任務(wù)是讀取文件進(jìn)行處理,下面小編來和大家一起學(xué)習(xí)一下
    2019-05-05
  • JavaScript中Number.NEGATIVE_INFINITY值的使用詳解

    JavaScript中Number.NEGATIVE_INFINITY值的使用詳解

    這篇文章主要介紹了JavaScript中Number.NEGATIVE_INFINITY值的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-06-06
  • JS函數(shù)實(shí)現(xiàn)動(dòng)態(tài)添加CSS樣式表文件

    JS函數(shù)實(shí)現(xiàn)動(dòng)態(tài)添加CSS樣式表文件

    有時(shí)會(huì)使用一些改變心情方面的想法,比如JS函數(shù)實(shí)現(xiàn)動(dòng)態(tài)添加CSS樣式表文件,這樣就可以做到隨機(jī)加載心情文件,需要的朋友可以了解下
    2012-12-12
  • a標(biāo)簽的href與onclick事件的區(qū)別詳解

    a標(biāo)簽的href與onclick事件的區(qū)別詳解

    對(duì)于a標(biāo)簽的href與onclick事件,大家都經(jīng)常見到,也經(jīng)常使用,可它們有什么區(qū)別呢?下面就讓小編來給大家詳細(xì)介紹下,感興趣的朋友可以學(xué)習(xí)下,不用謝了,哈哈
    2014-11-11
  • javascript高級(jí)選擇器querySelector和querySelectorAll全面解析

    javascript高級(jí)選擇器querySelector和querySelectorAll全面解析

    下面小編就為大家?guī)硪黄猨avascript高級(jí)選擇器querySelector和querySelectorAll全面解析。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-04-04

最新評(píng)論