亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本篇文章給大家介紹一下Nodejs中的callback回調。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。


淺談Nodejs中的callback回調


什么是callback? 很顯然,字面意思就是回調

那為什么在Node中需要回調操作呢?了解過Node的同學可能會知道,就是為處理異步操作的結果。


下面就是針對這個問題來詳細說一下:

在說異步操作的callback回調之前,我們先看一下同步的操作模式:

function processData () {
    var data = fetchData ();
    data += 1;
    return data;
}

這種同步模式一般情況下可以正常工作,在其他開發環境下這種操作也是很典型的。然后可以明顯的看到fectData方法如果在加載數據的時候很耗時,就會造成在數據同步加載完成之前整個程序阻塞的情況。

Node.js是一個異步的操作處理的平臺,其使用callback回調的形式將不會被類似于文件I/O操作等阻塞。一個回調函數就是在一個給定的任務執行完成之后執行的函數;這種方式可以避免一些阻塞的情況,同時允許其他的代碼繼續執行。

我們使用Node.js的回調的形式去處理上面的同步操作fetchData耗時的情況:

function processData (callback) {
    fetchData(function (err, data) {
        if (err) {
            console.log("An error has occurred. Abort everything!");
            return callback(err);
        }
        data += 1;
        callback(data);
    });
}

一開始看的話,確實會覺得有些復雜,不太容易理解,但是確實很重要,因為回調處理異步操作是Node.js的基礎。

callback回調的意思就是:你的異步操作完成之后,你就執行我的callback回調里面的內容。

Node.js這種回調處理異步操作的形式允許我們盡可能多的處理并發操作(操作類似于IO操作)


舉個例子:

在一個web服務上,前面有幾個請求,由于某種原因阻塞了,同時之后還會有成百上千的請求正在發出;

Node.js會如何處理這種異步阻塞的情況呢?

其會執行異步的執行阻塞查詢,使之后的查詢請求可以正常工作,而不是說等待前面的阻塞請求結束之后,才去處理之后的請求。

下面是是使用異步函數的典型格式:

function asyncOperation ( a, b, c, callback ) {
    // ... lots of hard work ...
    if ( /* an error occurs */ ) {
        return callback(new Error("An error has occurred"));
    }
    // ... more work ...
    callback(null, d, e, f);
}
 
asyncOperation ( params.., function ( err, returnValues.. ) {
    //This code gets run after the async operation gets run
});

callback一般是異步函數的做后一個參數,當異步操作結束之后,去調用這個callback。

一般情況下,callback的第一個參數是error

如果異步操作遇到了錯誤,就會去調用callback,第一個參數是一個Error對象;反之,第一個error為null,其他參數正常返回。


分享到:
標簽:Nodejs callback回調
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定