JS運(yùn)行機(jī)制

????????JS本身是單線程語言,在h5中通過Web-Worker實(shí)現(xiàn)多線程,其本身只是一種模擬的手段,紙老虎。

? ? ? ? js如何實(shí)現(xiàn)異步操作呢?即當(dāng)前任務(wù)需要等太久時(shí)間才能完成,如何保證進(jìn)程不堵塞?,首先將所有任務(wù)分為同步任務(wù),異步任務(wù)。同步任務(wù)放入主線程中,一個(gè)接一個(gè)解決完成。異步任務(wù)則放入任務(wù)隊(duì)列中,只有當(dāng)任務(wù)隊(duì)列中的任務(wù)通知主線程,才會(huì)去完成該任務(wù)。在主線程中的任務(wù)未完成前,是不會(huì)執(zhí)行任務(wù)列表的任務(wù)的,就好比在while(true){};后新增 settimeout(function(){console.log(1)}),是不會(huì)輸出任何值的,因?yàn)椋骶€程被卡死了。settimeout方法未設(shè)定時(shí)間會(huì)默認(rèn)為0,但是一旦時(shí)間低于4ms都會(huì)默認(rèn)4ms。

異步任務(wù)的方法:

1.setTimeout和setlnterval

2.DOM事件

3.ES6的promise

4.ajax請(qǐng)求

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容