欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript之事件循環(huán)案例講解

 更新時(shí)間:2021年07月27日 10:01:59   作者:做一個(gè)優(yōu)秀的小前端  
這篇文章主要介紹了JavaScript之事件循環(huán)案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

js中的事件循環(huán)

因?yàn)镴avaScript是單線(xiàn)程的,同一事件只能執(zhí)行一種方法,所以會(huì)將程序中的方法加入到執(zhí)行棧中按照后進(jìn)先出的順序依次執(zhí)行,當(dāng)遇見(jiàn)異步任務(wù)時(shí)不會(huì)被阻塞,而是將任務(wù)放入事件隊(duì)列中,繼續(xù)執(zhí)行執(zhí)行棧中的同步代碼,等當(dāng)前執(zhí)行棧中的所有任務(wù)都執(zhí)行完畢則查找事件隊(duì)列中的任務(wù),并把任務(wù)的回調(diào)函數(shù)放入執(zhí)行棧中,執(zhí)行其中的同步代碼,如此反復(fù)形成的循環(huán)被稱(chēng)為事件循環(huán)。

node.js

node.js特點(diǎn)

事件驅(qū)動(dòng)

從上向下執(zhí)行代碼,當(dāng)遇到需要回調(diào)的地方就加入到事件隊(duì)列中,主線(xiàn)程運(yùn)行完就去執(zhí)行事件隊(duì)列中的回調(diào)。整個(gè)過(guò)程不會(huì)阻塞新的事件,也不需要維護(hù)已經(jīng)建立的事件

非阻塞io

主線(xiàn)程空閑時(shí),就開(kāi)始循環(huán)事件隊(duì)列,處理事件隊(duì)列中的事件,如果該事件不是io任務(wù)就親自處理,如果是io任務(wù),則交給線(xiàn)程池處理并指定回調(diào)函數(shù),然后繼續(xù)循環(huán)隊(duì)列中的其他事件,當(dāng)阻塞操作完成后會(huì)將結(jié)果和回調(diào)函數(shù)放入隊(duì)列中,主線(xiàn)程循環(huán)到時(shí)就執(zhí)行該回調(diào)函數(shù)。

node.js優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  1. 高并發(fā):node.js用一個(gè)主線(xiàn)程處理所有的請(qǐng)求,然后對(duì)io操作進(jìn)行異步處理,避開(kāi)了創(chuàng)建、銷(xiāo)毀線(xiàn)程以及在線(xiàn)程之間切換所需的開(kāi)銷(xiāo)和復(fù)雜性
  2. 適合io密集型應(yīng)用

缺點(diǎn):

  1. 不適合CPU密集型應(yīng)用:長(zhǎng)時(shí)間的計(jì)算會(huì)導(dǎo)致cpu時(shí)間片不能釋放,使得后續(xù)io事件無(wú)法發(fā)起
  2. 不能充分利用多核cpu
  3. 可靠性低,一旦代碼某個(gè)環(huán)節(jié)崩潰,整個(gè)系統(tǒng)都會(huì)崩潰

適用場(chǎng)景:

  1.  restful api:請(qǐng)求和響應(yīng)只需少量的文本,不需要大量的邏輯處理??梢蕴幚頂?shù)萬(wàn)條連接,只需請(qǐng)求api組織數(shù)據(jù)并返回即可
  2. 大量Ajax請(qǐng)求的場(chǎng)景中
  3. 聊天服務(wù):輕量級(jí),高流量,沒(méi)有復(fù)雜的計(jì)算邏輯

node.js的事件循環(huán) 

node事件循環(huán)依靠libuv引擎,v8解釋js代碼后調(diào)用對(duì)應(yīng)的node api,這些api由libuv引擎驅(qū)動(dòng)執(zhí)行對(duì)應(yīng)任務(wù),并把不同的事件放入不同的隊(duì)列中等待主線(xiàn)程執(zhí)行,因此node的事件循環(huán)存在于libuv引擎中

libuv引擎:實(shí)現(xiàn)了事件循環(huán)、文件操作等,是node.js實(shí)現(xiàn)異步的核心

node.js的單線(xiàn)程僅僅指JavaScript運(yùn)行在單線(xiàn)程中,內(nèi)部可以通過(guò)線(xiàn)程池完成io操作

poll(查詢(xún)階段)---》check(檢查階段)---》close callback(關(guān)閉事件回調(diào)階段)---》timer(定時(shí)器檢測(cè)階段)---》io回調(diào)階段---》閑置階段---》輪詢(xún)階段

poll階段(輪詢(xún)階段):

v8將js代碼解析后傳入libuv引擎中,循環(huán)首先進(jìn)入poll階段。先查看poll隊(duì)列是否有事件,有就按先進(jìn)先出順序執(zhí)行回調(diào)

到此這篇關(guān)于JavaScript之事件循環(huán)案例講解的文章就介紹到這了,更多相關(guān)JavaScript之事件循環(huán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Javascript中為String對(duì)象添加trim,ltrim,rtrim方法

    在Javascript中為String對(duì)象添加trim,ltrim,rtrim方法

    利用Javascript中每個(gè)對(duì)象(Object)的prototype屬性我們可以為Javascript中的內(nèi)置對(duì)象添加我們自己的方法和屬性。
    2006-09-09
  • js實(shí)現(xiàn)rem自動(dòng)匹配計(jì)算font-size的示例

    js實(shí)現(xiàn)rem自動(dòng)匹配計(jì)算font-size的示例

    本篇文章主要介紹了js實(shí)現(xiàn)rem自動(dòng)匹配計(jì)算font-size的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 詳解ajax、fetch、axios的區(qū)別

    詳解ajax、fetch、axios的區(qū)別

    本文主要介紹了詳解ajax、fetch、axios的區(qū)別,眾所周知它們都用來(lái)發(fā)送請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • use jscript Create a SQL Server database

    use jscript Create a SQL Server database

    use jscript Create a SQL Server database...
    2007-06-06
  • JS實(shí)現(xiàn)深拷貝和淺拷貝的方式詳解

    JS實(shí)現(xiàn)深拷貝和淺拷貝的方式詳解

    深拷貝和淺拷貝是面試中經(jīng)常出現(xiàn)的,主要考察對(duì)基本類(lèi)型和引用類(lèi)型的理解深度,本文主要給大家介紹了js實(shí)現(xiàn)深拷貝和淺拷貝的方式,需要的朋友可以參考下
    2022-05-05
  • 小程序?qū)崿F(xiàn)滑動(dòng)塊效果

    小程序?qū)崿F(xiàn)滑動(dòng)塊效果

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)滑動(dòng)塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • JavaScript解析JSON格式數(shù)據(jù)的方法示例

    JavaScript解析JSON格式數(shù)據(jù)的方法示例

    這篇文章主要介紹了JavaScript解析JSON格式數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了JavaScript解析json格式數(shù)據(jù)的常用函數(shù)與使用技巧,需要的朋友可以參考下
    2017-01-01
  • js實(shí)現(xiàn)百度登錄窗口拖拽效果

    js實(shí)現(xiàn)百度登錄窗口拖拽效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)百度登錄窗口拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 百度地圖API之本地搜索與范圍搜索

    百度地圖API之本地搜索與范圍搜索

    地圖服務(wù)是指可以提供數(shù)據(jù)信息的接口,比如說(shuō)本地搜索/路線(xiàn)規(guī)劃等,下面介紹下百度地圖API之本地搜索與范圍搜索的相關(guān)知識(shí),有需要的小伙伴可以來(lái)學(xué)習(xí)下
    2015-07-07
  • javascript實(shí)現(xiàn)彈幕墻效果

    javascript實(shí)現(xiàn)彈幕墻效果

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)彈幕墻效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評(píng)論