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

資訊專欄INFORMATION COLUMN

Node.js 回調(diào)函數(shù) 阻塞與非阻塞

big_cat / 3605人閱讀

摘要:回調(diào)函數(shù)在完成任務(wù)后就會被調(diào)用,使用了大量的回調(diào)函數(shù),所有的都支持回調(diào)函數(shù)。因此,阻塞是按順序執(zhí)行的,而非阻塞是不需要按順序的,所以如果需要處理回調(diào)函數(shù)的參數(shù),我們就需要寫在回調(diào)函數(shù)內(nèi)。

Node.js異步變成的直接體現(xiàn)就是回調(diào)。
異步編程依托于回調(diào)來實現(xiàn),但不能說使用了回調(diào)后程序就異步化了。
回調(diào)函數(shù)在完成任務(wù)后就會被調(diào)用,Node使用了大量的回調(diào)函數(shù),Node所有的APi都支持回調(diào)函數(shù)。
比如,我們i 遍讀文件,一邊執(zhí)行其他命令,在文件讀取完成后,我們將文件內(nèi)容作為回調(diào)函數(shù)都參數(shù)返回。
這樣在執(zhí)行代碼時就沒有阻塞或等待文件I/O操作。這就大大提高了Node都性能,可以處理大量的并發(fā)請求。

接下來寫一個阻塞代碼實例
創(chuàng)建一個文件input.txt,內(nèi)容如下
學(xué)習(xí)前端知識,記錄筆記 ,來segmentfault。

創(chuàng)建main.js 文件,代碼如下:

const fs = require("fs") //fs模塊用于對系統(tǒng)文件及目錄進行讀寫操作。

const data = fs.readFileSync("input.txt");

console.log(data.toString());
console.log("執(zhí)行程序結(jié)束")

非阻塞代碼實例

const fs = require("fs") //fs模塊用于對系統(tǒng)文件及目錄進行讀寫操作。

fs.readFile("input.txt",(err, data) => {
    if(err) {
        console.log(err)
    }else{
        console.log(data.toString())
    }
})
console.log("程序執(zhí)行結(jié)束!")

以上兩個實例寫出了阻塞與非阻塞的不同。第一個實例在文件讀取完后才執(zhí)行完程序。
第二個實例我們不需要等待文件讀取完,這樣就可以在讀取文件時同時執(zhí)行接下來的代碼,大大提高了程序的性能。

因此,阻塞是按順序執(zhí)行的,而非阻塞是不需要按順序的,所以如果需要處理回調(diào)函數(shù)的參數(shù),我們就需要寫在回調(diào)函數(shù)內(nèi)。

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

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

相關(guān)文章

  • Node.js 指南(阻塞與非阻塞概述)

    摘要:標準庫中的所有方法都提供非阻塞的異步版本,并接受回調(diào)函數(shù),某些方法還具有對應(yīng)的阻塞方法,其名稱以結(jié)尾。比較代碼阻塞方法同步執(zhí)行,非阻塞方法異步執(zhí)行。 阻塞與非阻塞概述 此概述介紹了Node.js中阻塞與非阻塞調(diào)用之間的區(qū)別,此概述將引用事件循環(huán)和libuv,但不需要事先了解這些主題,假設(shè)讀者對JavaScript語言和Node.js回調(diào)模式有基本的了解。 I/O主要指與libuv支持的...

    zebrayoung 評論0 收藏0
  • node.js的異步IO 第一篇

    摘要:給出了解決方案就是單線程,遠離線程鎖,狀態(tài)同步的問題,使用異步讓單線程遠離阻塞,高效利用。而實際上的異步是采用了線程池技術(shù),發(fā)起異步時,把操作扔到線程池里面執(zhí)行,然后主線程繼續(xù)執(zhí)行其他操作,執(zhí)行完畢通過線程間通信通知主線程,主線程執(zhí)行回調(diào)。 異步IO,事件驅(qū)動,單線程構(gòu)成了node的基調(diào),為什么異步IO在node中如此重要呢? 我們先來說一下異步的概念,異步常見于前端開發(fā),例如ajax...

    feng409 評論0 收藏0
  • Node.js 指南(關(guān)于Node.js

    摘要:如果不熟悉這種語言,有一篇關(guān)于阻塞與非阻塞的完整文章。在設(shè)計上與的或的等系統(tǒng)類似,并受其影響,進一步采用事件模型。它將事件循環(huán)呈現(xiàn)為運行時構(gòu)造而不是庫,在其他系統(tǒng)中,始終存在阻塞調(diào)用以啟動事件循環(huán)。上一篇指南目錄下一篇入門指南 關(guān)于Node.js 作為異步事件驅(qū)動的JavaScript運行時,Node旨在構(gòu)建可伸縮的網(wǎng)絡(luò)應(yīng)用程序,在下面的hello world示例中,可以同時處理許多連...

    Java_oldboy 評論0 收藏0
  • node - 非阻塞的異步 IO

    摘要:而線程是進程的一部分,二者相扶相依,其中單線程被稱為輕權(quán)進程或輕量級進程,執(zhí)行特性線程只有個基本狀態(tài)就緒,執(zhí)行,阻塞。以上所述證明了操作與其他函數(shù)的這種區(qū)別是由實現(xiàn),是用多線程的方式,在標準的阻塞式上模擬非阻塞異步,線程池默認限制四線程。 node - 非阻塞的異步 IO 每當我們提起 node.js 時總會脫口而出 事件驅(qū)動、非阻塞I/O 和 單線程,所以我總結(jié)了以下幾點對這三項概念...

    yuxue 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<