成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js 單線程 回調(diào)

enrecul101 / 803人閱讀

摘要:定時(shí)器機(jī)制更正之前的錯(cuò)誤認(rèn)識(shí)函數(shù)內(nèi)調(diào)用,函數(shù)結(jié)束。在規(guī)定的時(shí)間之后,依然會(huì)觸發(fā)的回調(diào)。首先要確認(rèn)幾點(diǎn)單線程瀏覽器多線程單線程原因如果多線程,那么刪除或者創(chuàng)建元素,都需要在線程之間通信。因?yàn)闉g覽器不確定是狀態(tài)。所以,設(shè)計(jì)之初就是單線程。

js定時(shí)器機(jī)制

更正之前的錯(cuò)誤認(rèn)識(shí):
1.函數(shù)內(nèi)調(diào)用settimeout,函數(shù)結(jié)束。在規(guī)定的時(shí)間之后,依然會(huì)觸發(fā)settimeout的回調(diào)。

首先要確認(rèn)js幾點(diǎn):
1.js單線程 vs 瀏覽器多線程:

單線程原因:如果多線程,那么刪除或者創(chuàng)建dom元素,都需要在線程之間通信。因?yàn)闉g覽器不確定是dom狀態(tài)。所以,js設(shè)計(jì)之初就是單線程。

好處:簡單,沒有線程切換維護(hù)開銷,省內(nèi)存

2.瀏覽器是多線程:

javascript引擎線程

界面渲染線程

瀏覽器事件觸發(fā)線程

Http請求線程

但是瀏覽器內(nèi)核是多線程!瀏覽器內(nèi)核實(shí)現(xiàn)允許多個(gè)線程異步執(zhí)行,這些線程在內(nèi)核制控下相互配合以保持同步.假如某一瀏覽器內(nèi)核的實(shí)現(xiàn)至少有三個(gè)常駐線程:javascript引擎線程,界面渲染線程,瀏覽器事件觸發(fā)線程,除些以外,也有一些執(zhí)行完就終止的線程,如Http請求線程,這些異步線程都會(huì)產(chǎn)生不同的異步事件,下面通過一個(gè)圖來闡明單線程的JavaScript引擎與另外那些線程是怎樣互動(dòng)通信的.雖然每個(gè)瀏覽器內(nèi)核實(shí)現(xiàn)細(xì)節(jié)不同,但這其中的調(diào)用原理都是大同小異.

定時(shí)器難點(diǎn):
1.定時(shí)器實(shí)際延時(shí)時(shí)間,是無法預(yù)知的
理解js異步回調(diào)和它的單線程是如何配合工作的:

 為什么settimeout會(huì)觸發(fā)回調(diào)  ajax回調(diào) click回調(diào)

參考資料:http://www.laruence.com/2009/09/23/1089.html

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91616.html

相關(guān)文章

  • JS 異步的實(shí)現(xiàn)

    摘要:由于引擎同一時(shí)間只執(zhí)行一段代碼這是由單線程的性質(zhì)決定的,所以每個(gè)代碼塊阻塞了其它異步事件的進(jìn)行。這意味著瀏覽器將等待著一個(gè)新的異步事件發(fā)生。異步的任務(wù)執(zhí)行的順序是不固定的,主要看返回的速度。 我們經(jīng)常說JS是單線程的,比如node.js研討會(huì)上大家都說JS的特色之一是單線程的,這樣使JS更簡單明了,可是大家真的理解所謂JS的單線程機(jī)制嗎?單線程時(shí),基于事件的異步機(jī)制又該當(dāng)如何,這些知識(shí)...

    sihai 評論0 收藏0
  • 異步

    摘要:在異步機(jī)制中,任務(wù)隊(duì)列就是用來維護(hù)異步任務(wù)回調(diào)函數(shù)的隊(duì)列。四對象對象是工作組提出的一種規(guī)范,目的是為異步編程提供統(tǒng)一接口。 異步 1.JavaScript單線程的理解 Javascript語言的執(zhí)行環(huán)境是單線程(single thread)。所謂單線程,就是指一次只能完成一件任務(wù)。如果有多個(gè)任務(wù),就必須排隊(duì),前面一個(gè)任務(wù)完成,再執(zhí)行后面一個(gè)任務(wù),以此類推。 2.JavaScript單線...

    goji 評論0 收藏0
  • 【11】JavaScript 線程機(jī)制與事件機(jī)制

    摘要:線程機(jī)制與事件機(jī)制一進(jìn)程與線程進(jìn)程程序的一次執(zhí)行,它占有一片獨(dú)有的內(nèi)存空間。事件響應(yīng)模塊負(fù)責(zé)事件的管理。當(dāng)事件發(fā)生時(shí)管理模塊會(huì)將回調(diào)函數(shù)及其數(shù)據(jù)添加到回調(diào)列隊(duì)中。但是子線程完全受主線程控制,且不得操作。向另一個(gè)線程發(fā)送消息。 JavaScript線程機(jī)制與事件機(jī)制 一、進(jìn)程與線程 進(jìn)程(process) 程序的一次執(zhí)行,它占有一片獨(dú)有的內(nèi)存空間。 可以通過windows任務(wù)管理器查...

    fobnn 評論0 收藏0
  • js線程,異步及回調(diào)函數(shù)

    摘要:當(dāng)主線程開始執(zhí)行異步任務(wù),實(shí)際就是執(zhí)行對應(yīng)的回調(diào)函數(shù)。異步任務(wù)必須指定回調(diào)函數(shù)。所以注意的是,只是將事件插入了任務(wù)隊(duì)列,必須等到當(dāng)前代碼執(zhí)行棧執(zhí)行完,主線程才會(huì)去執(zhí)行它指定的回調(diào)函數(shù)。 最近本人對于js的運(yùn)行機(jī)制,特別是異步,還有回調(diào)函數(shù)感覺很亂,于是參考了很多有用的博客(博客原文地址會(huì)在文末給出),整理如下: js單線程 我們都知道,Javascript語言的執(zhí)行環(huán)境是單線程(si...

    Songlcy 評論0 收藏0
  • JS核心知識(shí)點(diǎn)梳理——異步,線程,運(yùn)行機(jī)制

    摘要:引言學(xué)習(xí)的時(shí)候,經(jīng)常聽人說,即是異步的,又是單線程的。所以我們說是異步單線程的。參考從瀏覽器多進(jìn)程到單線程,運(yùn)行機(jī)制最全面的一次梳理運(yùn)行機(jī)制詳解再談異步機(jī)制詳解運(yùn)行原理解析并發(fā)模型與事件循環(huán) showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 引言 學(xué)習(xí)javascipt的時(shí)候,經(jīng)常聽人說,javascipt即是異步...

    TANKING 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<