新聞中心
字面誤區(qū):1、js同步操作任務(wù),并非一起操作之意;2、js異步操作任務(wù),也并非是指在不同線程里做不同的事情。
本質(zhì)理解:首頁(yè)js的語(yǔ)言執(zhí)行環(huán)境是單線程的,也就是一次只能完成一個(gè)任務(wù),多個(gè)任務(wù)就必須按照時(shí)間先后排隊(duì),前面完成后才能完成后一個(gè)任務(wù)。這個(gè)是js的常規(guī)模式,也就也是同步操作任務(wù)。
弊端:同步操作任務(wù)帶來的問題是,只要一個(gè)任務(wù)執(zhí)行時(shí)間過程,后面的任務(wù)都會(huì)排隊(duì)等待,拖延整個(gè)程序的執(zhí)行,如:常見的瀏覽器假死很可能就是js任務(wù)執(zhí)行時(shí)間太長(zhǎng)導(dǎo)致。
為了解決同步操作帶來的弊端,js語(yǔ)言增加了異步任務(wù)的操作模式:當(dāng)前任務(wù)可以攜帶回一個(gè)回調(diào)函數(shù)(當(dāng)前任務(wù)執(zhí)行時(shí)間過長(zhǎng),把需要提前執(zhí)行的任務(wù)放在回掉中);可以利用setTimeout構(gòu)建異步任務(wù),讓主邏輯優(yōu)先執(zhí)行,對(duì)于耗時(shí)間長(zhǎng)的任務(wù)可以放在setTimeout中異步執(zhí)行。所以異步操作任務(wù)主要是改變了程序的正常執(zhí)行操作順序。
如下:
執(zhí)行結(jié)果為:
1
5
2
3
4
那么大致的運(yùn)行機(jī)制如下:
(1)在js主程序(單線程)上的同步任務(wù)形成了一個(gè)主任務(wù)執(zhí)行棧
(2)主線程之外還存在一個(gè)任務(wù)隊(duì)列,這個(gè)隊(duì)列存在一些按時(shí)間順序存放的事件,如鼠標(biāo)點(diǎn)擊、計(jì)時(shí)觸發(fā)等,主線程中每出現(xiàn)一個(gè)異步任務(wù),任務(wù)隊(duì)列就會(huì)增加一個(gè)異步任務(wù)的事件
(3)一般執(zhí)行棧中的同步任務(wù)執(zhí)行完畢,系統(tǒng)就會(huì)讀取任務(wù)隊(duì)列,看看哪些事件是可以執(zhí)行的,一旦可以執(zhí)行將進(jìn)入執(zhí)行棧開始執(zhí)行
(4)不斷重復(fù)以上動(dòng)作
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)題目:理解js的同步操作與異步操作-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.ef60e0e.cn/article/dgsecg.html