91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nodejs中callback回調的示例分析

發布時間:2021-05-19 10:13:00 來源:億速云 閱讀:198 作者:小新 欄目:web開發

小編給大家分享一下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對象;反之,第一個errornull,其他參數正常返回。

以上是“Nodejs中callback回調的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江门市| 万盛区| 汤原县| 集贤县| 修文县| 慈利县| 柘城县| 老河口市| 青河县| 桑日县| 贡嘎县| 布拖县| 莱芜市| 阿拉善左旗| 万盛区| 无为县| 米脂县| 黑龙江省| 巴彦淖尔市| 广平县| 华容县| 永年县| 朝阳县| 利川市| 嘉黎县| 额尔古纳市| 合阳县| 恭城| 镇巴县| 景洪市| 织金县| 芷江| 泽普县| 房山区| 曲靖市| 武宁县| 中阳县| 通道| 武冈市| 信阳市| 南和县|