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

資訊專欄INFORMATION COLUMN

瀏覽器eventLoop

baukh789 / 568人閱讀

摘要:瀏覽器中的與中的之前是不一樣,之后,與瀏覽器一樣單線程存在的問題是單線程的,處理任務(wù)是一件接著一件處理,所以如果一個(gè)任務(wù)需要處理很久的話,后面的任務(wù)就會(huì)被阻塞所以通過事件循環(huán)的方式解決了這個(gè)問題在了解事件循環(huán)前,我們需要了解一些關(guān)鍵詞什么是

瀏覽器中的eventLoop 與node中的eventLoop

node11之前是不一樣,node11之后,與瀏覽器一樣

js單線程存在的問題

js是單線程的,處理任務(wù)是一件接著一件處理,所以如果一個(gè)任務(wù)需要處理很久的話,后面的任務(wù)就會(huì)被阻塞

所以js通過Event Loop事件循環(huán)的方式解決了這個(gè)問題,在了解事件循環(huán)前,我們需要了解一些關(guān)鍵詞

什么是stack,queue,heap,event loop

stack(棧):先進(jìn)后出

queue(隊(duì)列)先進(jìn)先出

heap(堆):存儲(chǔ)obj對(duì)象

Event Loop的具體流程

堆里面有同步和異步的方法

這些方法,放到棧里,棧是先進(jìn)后出的執(zhí)行

同步的話一個(gè)一個(gè)的執(zhí)行,碰到異步的方法,也會(huì)執(zhí)行,但是不會(huì)執(zhí)行完,而是先交給webapis處理,多個(gè)異步,會(huì)形成一個(gè)隊(duì)列,先進(jìn)先出

等到同步的方法執(zhí)行完后,把wepapi中的異步方法取出來,放到棧中執(zhí)行

    

上面的代碼最后輸出1,5,2,4,3,執(zhí)行過程:
只有console.log(2)執(zhí)行完成,執(zhí)行棧再次清空時(shí),才會(huì)從回調(diào)隊(duì)列取出console.log(3)

1,輸出1,將2push進(jìn)回調(diào)隊(duì)列

2,將4push進(jìn)回調(diào)隊(duì)列

3,輸出5

4,清空了執(zhí)行棧,讀取輸出2,發(fā)現(xiàn)有3,將3push進(jìn)回調(diào)隊(duì)列

5,清空了執(zhí)行棧,讀取輸出4

6,清空了執(zhí)行棧,讀取輸出3

Macrotask(宏任務(wù))、Microtask(微任務(wù))

Microtask(微任務(wù))雖然是隊(duì)列,但并不是一個(gè)一個(gè)放入執(zhí)行棧,而是當(dāng)執(zhí)行棧請(qǐng)空,會(huì)執(zhí)行全部

Microtask(微任務(wù))隊(duì)列中的任務(wù),最后才是取回調(diào)隊(duì)列的第一個(gè)Macrotask(宏任務(wù))

···

···
上面的執(zhí)行過程是:
1,將setTimeout給push進(jìn)宏任務(wù)
2,將then(2)push進(jìn)微任務(wù)
3,將then(4)push進(jìn)微任務(wù)
4,任務(wù)隊(duì)列為空,取出微任務(wù)第一個(gè)then(2)壓入執(zhí)行棧
5,輸出2,將then(3)push進(jìn)微任務(wù)
6,任務(wù)隊(duì)列為空,取出微任務(wù)第一個(gè)then(4)壓入執(zhí)行棧
7,輸出4
8,任務(wù)隊(duì)列為空,取出微任務(wù)第一個(gè)then(3)壓入執(zhí)行棧
9,輸出3
10,任務(wù)隊(duì)列為空,微任務(wù)也為空,取出宏任務(wù)中的setTimeout(1)
11,輸出1

參考

https://juejin.im/post/5a6309...
https://github.com/Advanced-F...

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

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

相關(guān)文章

  • 事件循環(huán)(EventLoop)的學(xué)習(xí)總結(jié)

    摘要:事件循環(huán)當(dāng)進(jìn)程啟動(dòng)時(shí),會(huì)創(chuàng)建一個(gè)循環(huán),每個(gè)循環(huán)通過內(nèi)部的觀察者來查看是否有事件需要處理,如果有就取出事件和它相關(guān)的回調(diào)函數(shù)去執(zhí)行,執(zhí)行完以后就進(jìn)入下一個(gè)循環(huán),如果不再有就退出進(jìn)程。 前言 在學(xué)習(xí)eventloop之前,我們需要復(fù)習(xí)一下js的單線程和異步。雖說js是單線程的,但是在瀏覽器和Node中都做了相應(yīng)的處理。如瀏覽器中的web workers(工作線程),Node中的child_...

    lentoo 評(píng)論0 收藏0
  • 事件循環(huán)(EventLoop)的學(xué)習(xí)總結(jié)

    摘要:事件循環(huán)當(dāng)進(jìn)程啟動(dòng)時(shí),會(huì)創(chuàng)建一個(gè)循環(huán),每個(gè)循環(huán)通過內(nèi)部的觀察者來查看是否有事件需要處理,如果有就取出事件和它相關(guān)的回調(diào)函數(shù)去執(zhí)行,執(zhí)行完以后就進(jìn)入下一個(gè)循環(huán),如果不再有就退出進(jìn)程。 前言 在學(xué)習(xí)eventloop之前,我們需要復(fù)習(xí)一下js的單線程和異步。雖說js是單線程的,但是在瀏覽器和Node中都做了相應(yīng)的處理。如瀏覽器中的web workers(工作線程),Node中的child_...

    hizengzeng 評(píng)論0 收藏0
  • 事件循環(huán)(EventLoop)的學(xué)習(xí)總結(jié)

    摘要:事件循環(huán)當(dāng)進(jìn)程啟動(dòng)時(shí),會(huì)創(chuàng)建一個(gè)循環(huán),每個(gè)循環(huán)通過內(nèi)部的觀察者來查看是否有事件需要處理,如果有就取出事件和它相關(guān)的回調(diào)函數(shù)去執(zhí)行,執(zhí)行完以后就進(jìn)入下一個(gè)循環(huán),如果不再有就退出進(jìn)程。 前言 在學(xué)習(xí)eventloop之前,我們需要復(fù)習(xí)一下js的單線程和異步。雖說js是單線程的,但是在瀏覽器和Node中都做了相應(yīng)的處理。如瀏覽器中的web workers(工作線程),Node中的child_...

    ninefive 評(píng)論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 評(píng)論0 收藏0
  • Netty 框架總結(jié)「ChannelHandler 及 EventLoop

    摘要:隨著狀態(tài)發(fā)生變化,相應(yīng)的產(chǎn)生。這些被轉(zhuǎn)發(fā)到中的來采取相應(yīng)的操作。當(dāng)收到數(shù)據(jù)或相關(guān)的狀態(tài)改變時(shí),這些方法被調(diào)用,這些方法和的生命周期密切相關(guān)。主要由一系列組成的。采用的線程模型,在同一個(gè)線程的中處理所有發(fā)生的事。 「博客搬家」 原地址: 簡書 原發(fā)表時(shí)間: 2017-05-05 學(xué)習(xí)了一段時(shí)間的 Netty,將重點(diǎn)與學(xué)習(xí)心得總結(jié)如下,本文主要總結(jié)ChannelHandler 及 E...

    VioletJack 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

baukh789

|高級(jí)講師

TA的文章

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