JavaScript 操作宏任務(wù)與微任務(wù)
宏任務(wù)與微任務(wù)
- javaScript是單線(xiàn)程語(yǔ)言(如果多線(xiàn)程dom會(huì)瘋掉)
- 所以在同一時(shí)間只能執(zhí)行一個(gè)任務(wù),稱(chēng)為主線(xiàn)程,用來(lái)執(zhí)行同步任務(wù)
- 同時(shí)還有兩個(gè)任務(wù)列表用于存放異步任務(wù),宏任務(wù)、微任務(wù)
- 執(zhí)行順序?yàn)椋?strong>主線(xiàn)程=>微任務(wù)=>宏任務(wù)
有關(guān)定時(shí)器
- 定時(shí)器模塊,到達(dá)時(shí)間點(diǎn)將其放入宏任務(wù)隊(duì)列
- 如果主線(xiàn)程沒(méi)有任務(wù)則執(zhí)行,如果有則等待執(zhí)行完成后再繼續(xù)執(zhí)行
- 如果有兩個(gè)相同時(shí)間的定時(shí)器則上面的先執(zhí)行下面的后執(zhí)行
- 如果兩個(gè)時(shí)間不同的定時(shí)器則時(shí)間短的先執(zhí)行時(shí)間長(zhǎng)的后執(zhí)行
注意點(diǎn):
- 定時(shí)器的⏲是在定時(shí)器模塊中完成的,完成后就和普通異步任務(wù)一樣了,
- 時(shí)間方面由于主線(xiàn)程實(shí)踐過(guò)長(zhǎng)的原因,有可能會(huì)延后

有關(guān)Promise
- promise的構(gòu)造函數(shù)為同步任務(wù)
- 執(zhí)行順序永遠(yuǎn)為:同步=>微任務(wù)=>宏任務(wù)
- 在嵌套代碼中可能出現(xiàn)宏任務(wù)中有同步、宏任務(wù)、微任務(wù),這時(shí)將他們放到下一次執(zhí)行中的隊(duì)列/主線(xiàn)程等待執(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)文章希望大家以后多多支持腳本之家!
- JS事件循環(huán)機(jī)制event loop宏任務(wù)微任務(wù)原理解析
- JavaScript事件循環(huán)及宏任務(wù)微任務(wù)原理解析
- 淺談javascript事件環(huán)微任務(wù)和宏任務(wù)隊(duì)列原理
- 淺談JavaScript宏任務(wù)和微任務(wù)執(zhí)行順序
- 淺談js中的宏任務(wù)和微任務(wù)
- JavaScript中的宏任務(wù)和微任務(wù)詳情
- JavaScript?微任務(wù)和宏任務(wù)講解
- 詳解JS事件循環(huán)及宏任務(wù)微任務(wù)的原理
- Node.js中的async?和?await?關(guān)鍵字微任務(wù)和宏任務(wù)
- JavaScript宏任務(wù)和微任務(wù)區(qū)別介紹
相關(guān)文章
簡(jiǎn)單介紹JavaScript的變量和數(shù)據(jù)類(lèi)型
這篇文章主要介紹了簡(jiǎn)單介紹JavaScript的變量和數(shù)據(jù)類(lèi)型,是JS入門(mén)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06
JavaScript預(yù)編譯和執(zhí)行過(guò)程詳解
本文詳細(xì)講解了JavaScript預(yù)編譯和執(zhí)行過(guò)程,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
詳解JavaScript中的客戶(hù)端消息框架設(shè)計(jì)原理
這篇文章主要介紹了詳解JavaScript中的客戶(hù)端消息框架設(shè)計(jì)原理,包括客戶(hù)端和服務(wù)器端的通信等方面的內(nèi)容,需要的朋友可以參考下2015-06-06
淺析JavaScript基本類(lèi)型與引用類(lèi)型
這篇文章主要介紹了JavaScript基本類(lèi)型與引用類(lèi)型詳解,講解了如類(lèi)型的判斷、類(lèi)型的轉(zhuǎn)換、類(lèi)型的復(fù)制等內(nèi)容,需要的朋友可以參考下2014-05-05
Javascript基礎(chǔ)_簡(jiǎn)單比較undefined和null 值
下面小編就為大家?guī)?lái)一篇Javascript基礎(chǔ)_簡(jiǎn)單比較undefined和null 值。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
JavaScript中利用各種循環(huán)進(jìn)行遍歷的方式總結(jié)
這篇文章主要介紹了JavaScript中利用各種循環(huán)進(jìn)行遍歷的方式總結(jié),是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11
JavaScript高級(jí)程序設(shè)計(jì)(第3版)學(xué)習(xí)筆記8 js函數(shù)(中)
接著看函數(shù)——這個(gè)具有魔幻色彩的對(duì)象。在上篇文章中說(shuō)函數(shù)內(nèi)部屬性時(shí),還遺留了一個(gè)this內(nèi)部屬性沒(méi)有解釋?zhuān)贿^(guò)在說(shuō)this之前,我想先說(shuō)一說(shuō)執(zhí)行環(huán)境和作用域的概念2012-10-10

