當前位置:編程學習大全網 - 編程語言 - 如何優雅地處理Nodejs中的異步回調

如何優雅地處理Nodejs中的異步回調

Async、q、Promise等第三方庫用來處理異步回調。

為了更好的處理嵌套回調的問題,可以考慮使用壹些專門做異步處理的第三方庫,當然也可以自己編寫壹個異步處理的輔助工具。

處理async、q和promise的常用庫有。根據npmjs.org的網站,async是最火的。之前用過Async,確實方便,各種異步處理的控制流程也很好的實現了。

我們將使用async來處理同時讀取兩個文件的初始代碼。示例如下:

var async = require(“async”)

,fs = require(' fs ');

異步並行([

函數(回調){

fs.readFile('/etc/passwd ',function (err,data) {

if (err)回調(err);

回調(空,數據);

});

},

函數(回調){

fs.readFile('/etc/passwd2 ',function (err,data2) {

if (err)回調(err);

回調(null,data 2);

});

}

],

函數(錯誤,結果){

//這裏處理data和data2數據,從結果中獲取每個文件的內容。

});

通過async模塊,可以很好的控制異步執行流程,解決了層層回調的問題。代碼比以前清晰了,但還是離不開回調函數。

想想不使用回調函數來處理異步該有多好。接下來,我們來談談如何利用ES6的新特性來實現這個目標。

優雅點:擁抱ES6,替代回調函數,解決回調地獄問題。

換句話說,EcmaScript Harmony (ES6)為js引入了許多新特性。對ES6不太了解的同學可以自己百度壹下。

要在nodejs中使用ES6的新特性,需要使用v0.11.x以上的版本..

本文介紹了使用生成器功能代替回調函數,但是妳不了解生成器?妳可以看看這裏。

這裏使用了co和thunkify兩個模塊,大家都用npm install命令來安裝。

在啟動時,為了讓nodejs支持ES6的特性,需要附加壹個-harmony參數,比如:node - harmony index.js

仍然以本文開頭提到的問題為例,使用生成器特性的示例代碼如下:

var fs = require('fs ')

,co =要求(' co ')

,thunkify = require(' thunkify ');

var readFile = thunkify(fs . readFile);

文書主任(職能*){

var test 1 = yield readFile(' test 1 . txt ');

var test 2 = yield readFile(' test 2 . txt ');

var test = test 1 . tostring()+test 2 . tostring();

console.log(測試);

})();

在代碼中處理異常也很簡單,就OK了:

嘗試{

var test 1 = yield readFile(' test 1 . txt ');

} catch (e) {

//在此處理異常

}

這段代碼不是優雅多了嗎?像寫同步代碼壹樣處理異步是不是很酷?

在nodejs領域,Web開發最火的框架是express。值得壹提的是,express的核心成員TJ領導了壹個新的Web框架——KOA,號稱是下壹代Web開發框架。KOA真正利用了ES6的生成器,避免了開發Web系統時陷入層層回調。

  • 上一篇:西門子s7200plc編程
  • 下一篇:如何開壹家教育加盟連鎖店
  • copyright 2024編程學習大全網