日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

淺談JavaScript宏任務和微任務執行順序

瀏覽:183日期:2023-09-28 14:59:13
目錄一、JavaScript單線程1. 同步任務(synchronous) 2. 異步任務(asynchronous)二、任務隊列(task queue)1.執行棧擴展一下setTimeout的理解一、JavaScript單線程

JavaScript是單線程指的是同一時間只能干一件事情,只有前面的事情執行完,才能執行后面的事情。導致遇到耗時的任務時后面的代碼無法執行。

在此之前啊 我們必須了解同步和異步

1. 同步任務(synchronous)

console.log(123); console.log(456); for (let i = 1; i <= 5; i++) { console.log(i); }

淺談JavaScript宏任務和微任務執行順序

顧名思義 得到的一定是 順序執行

2. 異步任務(asynchronous)

setTimeout(() => { console.log(’定時器’); }, 0) console.log(’奧特曼’);

按普通的執行順序來說 定時器在上面 應該先輸出定時器 在輸出 奧特曼

淺談JavaScript宏任務和微任務執行順序

最后拿到的結果卻先輸出奧特曼 在輸出了定時器 原因呢就是 setTimeout是異步任務

補充一個知識點 setTimeout的定時器 不管延遲多少毫秒 也是異步的 每個瀏覽器的時間也是不同的,各個瀏覽器都有差異 但定義了0 最小也是4毫秒

二、任務隊列(task queue)

通過上面代碼知道setTimeout是異步的 我們就搞清了執行順序優先級 同步代碼>異步代碼 所以說 在任務隊列中 分為兩大類 1.同步任務 2. 異步任務

1.執行棧

(1)所有同步任務都在主線程上執行,形成一個執行棧(execution context stack)。

(2)主線程之外,還存在一個'任務隊列'(task queue)。只要異步任務有了運行結果,就在'任務隊列'之中放置一個事件。

(3)一旦'執行棧'中的所有同步任務執行完畢,系統就會讀取'任務隊列',看看里面有哪些事件。那些對應的異步任務,于是結束等待狀態,進入執行棧,開始執行。

(4)主線程不斷重復上面的第三步,稱為事件循環(Event Loop)。

簡單舉個梨子

淺談JavaScript宏任務和微任務執行順序

同樣都是去吃飯 但是p2 省去了出去的時間過程

簡單了解后 我們再來深入了解 異步任務中的 宏任務(macrotask )和 微任務(microtask )

個人理解: 對于宏任務和微任務 可以理解為兩種異步的形態, 異步有兩個孩子 宏任務 和 微任務

宏任務中的方法:1. script (可以理解為外層同步代碼,作為入口 ) 2. setTimeout/setInterval

微任務中的方法:1.Promise 2. nextTick

而他們的執行順序 是 微任務 先輸出 在輸出 宏任務

口說無憑 上代碼

setTimeout(() => { console.log(’定時器’); }, 0) new Promise((resolve) => { console.log(’同步代碼’)resolve(’異步代碼’) }).then((res) => { console.log(res); }) console.log(’奧特曼’);

淺談JavaScript宏任務和微任務執行順序

注意奧 new Promise是創建一個構造函數 這個過程是同步的,而.then方法是異步的 所以代碼先執行 同步>微任務>宏任務

為了更加詳細 用圖來描述執行過程 下面的圖有一丁丁大 學習不怕費流量哦

淺談JavaScript宏任務和微任務執行順序

淺談JavaScript宏任務和微任務執行順序

這些圖在融合一下

淺談JavaScript宏任務和微任務執行順序

擴展一下setTimeout的理解

疑問點1 同步代碼執行完了 setTimeout會從0計時嗎

setTimeout(() => { console.log(’setTimeout’); }, 1000); console.log(’奧特曼’); for (let i = 0; i < 1000; i++) { console.log(’’); }

淺談JavaScript宏任務和微任務執行順序

此時要表明的是 我在for循環的時候setTimeout也會去計時 他會去開啟一個定時器模塊 ,所以說執行主線程的時候,定時器模塊已經開始執行了,所以不會再去等待1秒去執行

(千萬別以為同步執行完了,再去計時哦)

疑問點2:兩個定時器 上面的定時器先執行 在執行下面的定時器嗎?

測驗我們只修要在加一個定時器 看看誰先執行就好了

setTimeout(() => { console.log(’setTimeout1’); }, 2000); setTimeout(() => { console.log(’setTimeout2’); }, 1000);

淺談JavaScript宏任務和微任務執行順序

結果發現 如果有兩個定時器,時間少的會優先放到主線程里去執行

疑問點3:定義一個變量為0 設置兩個一樣的定時器事件 他會輸出什么結果 ? (面試題)

i = 0 setTimeout(() => { console.log(++i); //1 }, 1000); setTimeout(() => { console.log(++i); //2 }, 1000);

看到現在 肯定要知道 定時器宏任務不是一起執行的 依次執行!!

宏任務、微任務 執行順序面試題

console.log(’1’); setTimeout(function () { console.log(’2’); process.nextTick(function () {console.log(’3’); }) new Promise(function (resolve) {console.log(’4’);resolve(); }).then(function () {console.log(’5’) }) }) process.nextTick(function () { console.log(’6’); }) new Promise(function (resolve) { console.log(’7’); resolve(); }).then(function () { console.log(’8’) }) setTimeout(function () { console.log(’9’); process.nextTick(function () {console.log(’10’); }) new Promise(function (resolve) {console.log(’11’);resolve(); }).then(function () {console.log(’12’) }) })

答案 :

第一輪 執行外面同步代碼 : 1 7

第二輪 執行 微任務 : 6 8

第三輪 宏任務 第一個setTimeout : 同步 2 4 微任務 3 5 第二個setTimeout:同步 9 11 微任務 10 12

整體答案: 1、7 、6、8、2、4、3、5、9、11、10、12

到此這篇關于淺談JavaScript宏任務和微任務執行順序的文章就介紹到這了,更多相關JavaScript宏任務和微任務執行順序內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
天堂va蜜桃一区二区三区| 日韩av在线播放网址| 久久人人97超碰国产公开结果| 中文一区一区三区免费在线观 | 日韩国产在线一| 久久午夜影院| 国产伦精品一区二区三区视频| 亚洲免费播放| 欧美日韩四区| 在线亚洲国产精品网站| 亚洲欧美久久精品| 日韩一级网站| 成人精品高清在线视频| 久久精品理论片| 国产精品s色| 欧美视频久久| 国产伦理一区| 国产成人精品一区二区三区免费| 亚洲精品进入| 亚洲欧洲日本mm| 国产伊人久久| www.com.cn成人| 国产高清久久| 美腿丝袜亚洲三区| 日韩欧美精品一区| 国产毛片精品| 91精品国产91久久久久久黑人| 免费成人在线观看| 综合五月婷婷| 日韩一区二区三区在线看| 国产精品嫩草影院在线看| 日韩在线观看一区| 欧美日韩视频网站| 捆绑调教日本一区二区三区| 国产欧美一区二区三区精品观看| 国产日韩亚洲| 国产激情精品一区二区三区| 欧美一区二区三区久久| 久久亚洲国产| 国产精品激情电影| 午夜日韩在线| 麻豆mv在线观看| 合欧美一区二区三区| 福利一区二区| 国产激情欧美| 国产视频网站一区二区三区| 在线国产日韩| 日韩一级欧洲| 一区在线视频观看| 九九久久电影| 999精品色在线播放| 久久久久久免费视频| 日韩不卡免费高清视频| 日产精品一区| 久久久久国产精品一区二区| 中文字幕在线官网| 亚洲91久久| 日韩欧美另类一区二区| 91精品国产成人观看| 久久久人人人| 亚洲成人精品| 免费一二一二在线视频| 日韩毛片视频| 国产videos久久| 久久99久久人婷婷精品综合| 爽爽淫人综合网网站| 99亚洲精品| 亚洲高清成人| 激情五月综合| 蜜桃国内精品久久久久软件9| 福利在线免费视频| 精品国产亚洲一区二区三区大结局 | 国产精品超碰| 国产精品欧美一区二区三区不卡| 亚洲精品成人一区| 亚洲欧美在线综合| 不卡中文字幕| 亚洲精品乱码日韩| 中文字幕av一区二区三区四区| 国产美女一区| 亚洲97av| 欧美日韩亚洲国产精品| 国产aⅴ精品一区二区三区久久 | 日本一区福利在线| 欧美精品国产白浆久久久久| 国产精品亚洲产品| 国产精品99视频| 美女网站视频一区| 99国产精品视频免费观看一公开 | 激情久久99| 亚洲欧美日韩国产| 日本va欧美va欧美va精品| 国产精品蜜月aⅴ在线| 国产午夜一区| 欧美天堂视频| 国产一区二区精品| 91亚洲无吗| 日韩伦理福利| 久久亚洲一区| 欧美日韩一区二区三区视频播放| 亚洲精一区二区三区| 久久精品国产网站| 久久成人精品| 国产在线一区不卡| 欧美日韩伊人| 日韩欧美一区二区三区在线观看| 午夜欧美精品| 国产精品高潮呻吟久久久久| 国产成人久久精品一区二区三区| 亚洲专区视频| 久久久夜精品| 欧美黑人巨大videos精品| 亚洲少妇在线| 麻豆成人av在线| 国产精品丝袜在线播放| 欧美性感美女一区二区| 麻豆一区二区99久久久久| av一区二区高清| 97精品97| 色婷婷综合网| 国产欧美日韩精品一区二区三区| 亚洲精品中文字幕乱码| 国产成人精品亚洲线观看 | 国产亚洲一区| 中文视频一区| 欧美日韩精品一本二本三本| 精品一区91| 国产欧美日本| 精品国产精品国产偷麻豆| 日韩av影院| 亚洲精品字幕| 亚洲一区二区三区四区五区午夜| 国产精品麻豆久久| 久久中文字幕二区| 日韩不卡在线| av在线资源| 国产精品一区二区av日韩在线| 日韩精品一二三区| 视频在线观看一区二区三区| 91久久中文| 天堂成人国产精品一区| 国产精品日韩欧美一区| 午夜国产欧美理论在线播放 | 日韩福利视频网| 亚洲+小说+欧美+激情+另类| 红桃视频国产一区| 天堂va在线高清一区| 视频一区日韩精品| 日韩精品免费一区二区夜夜嗨| 午夜在线播放视频欧美| 免费精品视频最新在线| 蜜臀91精品一区二区三区| 免费在线欧美视频| 鲁大师成人一区二区三区 | 亚洲精品88| 制服诱惑一区二区| 亚洲人成网77777色在线播放| 日韩欧美中文字幕在线视频| 国产毛片精品久久| 日韩伦理福利| 国产免费成人| 国产精品1区| 国产在线|日韩| 国产精品88久久久久久| 日韩精品一区二区三区中文在线| 国产精品资源| 日韩精品午夜| 亚洲男人在线| 九九色在线视频| 亚久久调教视频| 黄色欧美日韩| 美腿丝袜亚洲一区| 91超碰国产精品| 欧美视频久久| 欧美1级日本1级| 欧美一级网站| 一区二区三区四区精品视频| 午夜久久中文| 国产欧美日韩精品高清二区综合区| 国产精品啊v在线| 69精品国产久热在线观看| 激情综合自拍| 成人在线视频区| 中国女人久久久| 色偷偷偷在线视频播放| 日韩高清一区在线 | 久久不射中文字幕| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国产精品久久久久久久免费观看| 老司机精品久久| 久热综合在线亚洲精品| 欧美sss在线视频| 精品视频一区二区三区在线观看 | 久久福利影视| 亚洲综合不卡| 欧美日韩水蜜桃| 精品国产一区二区三区2021| 婷婷精品在线观看| 欧美日韩国产综合网| 美美哒免费高清在线观看视频一区二区|