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

Node.js中Process.nextTick()和Process.setImmediate()的區(qū)別

 更新時間:2022年07月05日 15:07:38   作者:社會主義接班人  
這篇文章介紹了Node.js中Process.nextTick()和Process.setImmediate()的區(qū)別,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、Webstrom使用node.jsIDE的問題

在區(qū)別這兩個函數(shù)之前來說一下Webstrom使用node.jsIDE的問題,在配置Node.js的IDE了,但setImmediate()、require等這些node.js中內(nèi)置的函數(shù)時并不會有提示,要解決這個問題只要設(shè)置一下Webstrom,File---->Setting---->Languages&Frameworks------>Node.js and NPM中的Node.js core Library is not enabled設(shè)為Enable.

二、兩者的區(qū)別

1.在理解兩者的區(qū)別之前要說一下輪詢

前面博客也有記錄,nodejs中是事件驅(qū)動的,有一個循環(huán)線程一直從事件隊列中取任務(wù)執(zhí)行或者I/O的操作轉(zhuǎn)給后臺線程池來操作,把這個循環(huán)線程的每次執(zhí)行的過程算是一次輪詢.

2.setImmediate()的使用

即時計時器立即執(zhí)行工作,它是在事件輪詢之后執(zhí)行,為了防止輪詢阻塞,每次只會調(diào)用一個。

3.Process.nextTick()的使用

它和setImmediate()執(zhí)行的順序不一樣,它是在事件輪詢之前執(zhí)行,為了防止I/O饑餓,所以有一個默認(rèn)process.maxTickDepth=1000來限制事件隊列的每次循環(huán)可執(zhí)行的nextTick()事件的數(shù)目。

4.總結(jié)

在網(wǎng)上百度的關(guān)于它們的總結(jié):

nextTick()的回調(diào)函數(shù)執(zhí)行的優(yōu)先級要高于setImmediate();

process.nextTick()屬于idle觀察者,setImmediate()屬于check觀察者.在每一輪循環(huán)檢查中,idle觀察者先于I/O觀察者,I/O觀察者先于check觀察者.

在具體實現(xiàn)上,process.nextTick()的回調(diào)函數(shù)保存在一個數(shù)組中,
setImmediate()的結(jié)果則是保存在鏈表中.
在行為上,process.nextTick()在每輪循環(huán)中會將數(shù)組中的回調(diào)函數(shù)全部執(zhí)行完.
而setImmediate()在每輪循環(huán)中執(zhí)行鏈表中的一個回調(diào)函數(shù).

5.代碼demo

//加入2個nextTick()的回調(diào)函數(shù)
process.nextTick(function(){
    console.log("nextTick延遲執(zhí)行A");
});
process.nextTick(function(){
    console.log("nextTick延遲執(zhí)行B");
    setImmediate(function(){
        console.log("setImmediate延遲執(zhí)行C");
    });
    process.nextTick(function(){
        console.log("nextTick延遲執(zhí)行D");
    });
});
//加入兩個setImmediate()回調(diào)函數(shù)
setImmediate(function(){
    console.log("setImmediate延遲執(zhí)行E");
    process.nextTick(function(){
        console.log("強(qiáng)勢插入F");
    });
    setImmediate(function(){
        console.log("setImmediate延遲執(zhí)行G");
    });
});
setImmediate(function(){
    console.log("setImmediate延遲執(zhí)行H");
    process.nextTick(function(){
        console.log("強(qiáng)勢插入I");
    });
    process.nextTick(function(){
        console.log("強(qiáng)勢插入J");
    });
    setImmediate(function(){
        console.log("setImmediate延遲執(zhí)行K");
    });
});
console.log("正常執(zhí)行L");

輸出結(jié)果:

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Immediate.js
正常執(zhí)行L
nextTick延遲執(zhí)行A
nextTick延遲執(zhí)行B
nextTick延遲執(zhí)行D
setImmediate延遲執(zhí)行E
setImmediate延遲執(zhí)行H
setImmediate延遲執(zhí)行C
強(qiáng)勢插入F
強(qiáng)勢插入I
強(qiáng)勢插入J
setImmediate延遲執(zhí)行G
setImmediate延遲執(zhí)行K

Process finished with exit code 0

關(guān)于執(zhí)行順序的問題很不容易搞明白,說實話現(xiàn)在我對它還是不是太理解,希望有大神能給講明白。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • nodejs 最新版安裝npm 的使用詳解

    nodejs 最新版安裝npm 的使用詳解

    本篇文章主要介紹了nodejs 最新版安裝npm 的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • node.js中的fs.close方法使用說明

    node.js中的fs.close方法使用說明

    這篇文章主要介紹了node.js中的fs.close方法使用說明,本文介紹了fs.close方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • MQTT Client實現(xiàn)消息推送功能的方法詳解

    MQTT Client實現(xiàn)消息推送功能的方法詳解

    這篇文章主要介紹了MQTT Client實現(xiàn)消息推送功能的方法,結(jié)合實例形式詳細(xì)分析了MQTT Client實現(xiàn)消息推送的基本原理、實現(xiàn)方法與相關(guān)操作注意事項,需要的朋友可以參考下
    2023-05-05
  • 基于node搭建服務(wù)器,寫接口,調(diào)接口,跨域的實例

    基于node搭建服務(wù)器,寫接口,調(diào)接口,跨域的實例

    今天小編就為大家分享一篇基于node搭建服務(wù)器,寫接口,調(diào)接口,跨域的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Win7系統(tǒng)中如何安裝高版本的NodeJS(親測有效!)

    Win7系統(tǒng)中如何安裝高版本的NodeJS(親測有效!)

    Node.js是基于Chrome V8引擎的JavaScript運(yùn)行環(huán)境,能夠使JavaScript在服務(wù)器端運(yùn)行,這篇文章主要給大家介紹了關(guān)于Win7系統(tǒng)中如何安裝高版本的NodeJS的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • node版本切換與版本升級降級教程(win)

    node版本切換與版本升級降級教程(win)

    nvm是一個node的版本管理工具,可以簡單操作node版本的切換、安裝、查看,下面這篇文章主要給大家介紹了關(guān)于node版本切換與版本升級降級教程的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 在node.js中怎么屏蔽掉favicon.ico的請求

    在node.js中怎么屏蔽掉favicon.ico的請求

    這篇文章主要介紹了在node.js中怎么屏蔽掉favicon.ico的請求,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • node.js博客項目開發(fā)手記

    node.js博客項目開發(fā)手記

    本篇文章給大家總結(jié)了node.js博客項目開發(fā)的相關(guān)步驟以及知識點(diǎn)分享,有興趣的朋友參考下。
    2018-03-03
  • Node中文件斷點(diǎn)續(xù)傳原理和方法總結(jié)

    Node中文件斷點(diǎn)續(xù)傳原理和方法總結(jié)

    在之前做過一個小項目,涉及到了文件上傳,在大文件上面使用了斷點(diǎn)續(xù)傳,降低了服務(wù)器方面的壓力,現(xiàn)在小編把Node中文件斷點(diǎn)續(xù)傳原理和方法總結(jié)分享給大家,感興趣的朋友一起看看吧
    2022-01-01
  • Node.js中的events事件模塊知識點(diǎn)總結(jié)

    Node.js中的events事件模塊知識點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于Node.js中的events事件模塊知識點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)下。
    2021-12-12

最新評論