成人免费看黄网站无遮挡,caowo999,se94se欧美综合色,a级精品九九九大片免费看,欧美首页,波多野结衣一二三级,日韩亚洲欧美综合

淺談js的異步執行的作用

時(shí)間:2024-08-11 06:26:53 好文 我要投稿
  • 相關(guān)推薦

淺談js的異步執行的作用

  1.Javascript語(yǔ)言的執行環(huán)境是”單線(xiàn)程”(single thread):

  優(yōu)點(diǎn):實(shí)現起來(lái)比較簡(jiǎn)單,執行環(huán)境相對單純;

  缺點(diǎn):只要有一個(gè)任務(wù)耗時(shí)很長(cháng),后面的任務(wù)都必須排隊等著(zhù),會(huì )拖延整個(gè)程序的執行。常見(jiàn)的瀏覽器無(wú)響應(假死),往往就是因為某一段Javascript代碼長(cháng)時(shí)間運行(比如死循環(huán)),導致整個(gè)頁(yè)面卡在這個(gè)地方,其他任務(wù)無(wú)法執行。

  為了解決這個(gè)問(wèn)題,Javascript語(yǔ)言將任務(wù)的執行模式分成兩種:同步(Synchronous)和異步(Asynchronous)。

  2.”異步模式”編程的幾種方法:

 。1)回調函數:優(yōu)點(diǎn)是簡(jiǎn)單、容易理解和部署,缺點(diǎn)是不利于代碼的閱讀和維護,各個(gè)部分之間高度耦合(Coupling),使得程序結構混亂、流程難以追蹤(尤其是回調函數嵌套的情況),而且每個(gè)任務(wù)只能指定一個(gè)回調函數。

 。2)采用事件驅動(dòng)模式(事件監聽(tīng)):優(yōu)點(diǎn)是比較容易理解,可以綁定多個(gè)事件,每個(gè)事件可以指定多個(gè)回調函數,而且可以”去耦合“(Decoupling),有利于實(shí)現模塊化。缺點(diǎn)是整個(gè)程序都要變成事件驅動(dòng)型,運行流程會(huì )變得很不清晰。

 。3)觀(guān)察者模式(發(fā)布訂閱模式):這種方法的性質(zhì)與”事件監聽(tīng)”類(lèi)似,但是明顯優(yōu)于后者。因為我們可以通過(guò)查看”消息中心”,了解存在多少信號、每個(gè)信號有多少訂閱者,從而監控程序的運行。

  3.異步操作的流程控制。

 。1)串行執行:編寫(xiě)一個(gè)流程控制函數,讓它來(lái)控制異步任務(wù),一個(gè)任務(wù)完成以后,再執行另一個(gè)。

  函數series就是串行函數,它會(huì )依次執行異步任務(wù),所有任務(wù)都完成后,才會(huì )執行final函數。items數組保存每一個(gè)異步任務(wù)的參數,results數組保存每一個(gè)異步任務(wù)的運行結果。

 。2)并行執行:所有異步任務(wù)同時(shí)執行,等到全部完成以后,才執行final函數。

  方法會(huì )同時(shí)發(fā)起6個(gè)異步任務(wù),等到它們全部完成以后,才會(huì )執行final函數。

  并行執行的好處是效率較高,比起串行執行一次只能執行一個(gè)任務(wù),較為節約時(shí)間。但是問(wèn)題在于如果并行的任務(wù)較多,很容易耗盡系統資源,拖慢運行速度。因此有了第三種流程控制方式。

 。3)并行與串行的結合:設置一個(gè)門(mén)檻,每次最多只能并行執行n個(gè)異步任務(wù)。這樣就避免了過(guò)分占用系統資源。

  變量running記錄當前正在運行的任務(wù)數,只要低于門(mén)檻值,就再啟動(dòng)一個(gè)新的任務(wù)//如果等于0,就表示所有任務(wù)都執行完了,這時(shí)就執行final函數最多只能同時(shí)運行兩個(gè)異步任務(wù)。

【淺談js的異步執行的作用】相關(guān)文章:

淺談的作文11-30

艾葉的作用12-18

淺談教學(xué)體會(huì )02-28

淺談穿越作文12-25

淺談共享作文09-02

執行力培訓03-12

提升執行力03-11

山楂的功效與作用12-17

青梅的功效與作用12-19