????????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)求