国产精品久久久久久无毒不卡,国产av午夜精品一区二区三区,国产成人精品日本亚洲专区61,成人爽a毛片免费啪啪,国产精品99精品久久免费

首頁技術(shù)文章正文

什么是同步任務?什么是異步任務?

更新時間:2021-10-07 來源:黑馬程序員 瀏覽量:

IT培訓班

JavaScript 是一門單線程執(zhí)行的編程語言。也就是說,同一時間只能做一件事情。如果前一個任務非常耗時,則后續(xù)的任務就不得不一直等待,從而導致程序假死的問題。所以為了防止某個耗時任務導致程序假死的問題,JavaScript 把待執(zhí)行的任務分為了兩類:
①同步任務(synchronous)
又叫做非耗時任務,指的是在主線程上排隊執(zhí)行的那些任務
只有前一個任務執(zhí)行完畢,才能執(zhí)行后一個任務
②異步任務(asynchronous)
又叫做耗時任務,異步任務由JavaScript 委托給宿主環(huán)境進行執(zhí)行
當異步任務執(zhí)行完成后,會通知JavaScript 主線程執(zhí)行異步任務的回調(diào)函數(shù)

同步任務和異步任務的執(zhí)行過程:

同步任務和異步任務的執(zhí)行過程

①同步任務由JavaScript 主線程次序執(zhí)行

②異步任務委托給宿主環(huán)境執(zhí)行

③已完成的異步任務對應的回調(diào)函數(shù),會被加入到任務隊列中等待執(zhí)行

④JavaScript 主線程的執(zhí)行棧被清空后,會讀取任務隊列中的回調(diào)函數(shù),次序執(zhí)行

⑤JavaScript 主線程不斷重復上面的第4 步

JavaScript 主線程從“任務隊列”中讀取異步任務的回調(diào)函數(shù),放到執(zhí)行棧中依次執(zhí)行。這個過程是循環(huán)不斷的,所以整個的這種運行機制又稱為EventLoop(事件循環(huán))。

同步任務和異步任務

import thenFs from ' then-fs '

console 
log('A')
thenFs. readFile(' ./files/1.txt', 'utf8' ). then(dataStr => {

console.log('B')
 })
setTimeout(( ) => {
console. log('C' )
},0)
console.log( 'D')

正確的輸出結(jié)果:ADCB。其中:

A 和D 屬于同步任務。會根據(jù)代碼的先后順序依次被執(zhí)行

C 和B 屬于異步任務。它們的回調(diào)函數(shù)會被加入到任務隊列中,等待主線程空閑時再執(zhí)行






猜你喜歡:

從async/await面試題看宏觀任務和微觀任務

如何實現(xiàn)計算機多任務運行?

怎樣使用select控件制作下拉菜單效果?select教程

怎樣操作載入指示器?【移動端APP開發(fā)】

黑馬程序員前端與移動開發(fā)培訓

分享到:
在線咨詢 我要報名
和我們在線交談!