三種Javascript(NodeJS)非同步程式設計程式碼模式比較
對於從其它語言平臺轉到NodeJS的程式設計師來講,非同步程式設計程式碼模式是一大難題,這篇文章比較三種程式碼模式。
原生 - 瘋狂的巢狀回撥,糟糕的異常處理
fs.readdir('.', function (err, files) {
if (err)
throw new Error(err);
var stats = [];
files.map(function (file, idx) {
fs.stat(file, function (err, stat) {
if (err)
throw new Error(err);
stats[idx] = stat;
if (stats.length === files.length)
console.log(stats);
});
})
})
Promise/Q - 沒有巢狀回撥,強大的異常處理
var readdir = Q.nbind(fs.readdir);
var stat = Q.nbind(fs.stat);
readdir('.')
.then(function (files) {
return Q.all(files.map(function (file) {
return stat(file);
}));
})
.done(console.log);
Promise/Q + ES6 Generator - 非同步的程式碼看上去就像同步的程式碼一樣
var readdir = Q.nbind(fs.readdir);
var stat = Q.nbind(fs.stat);
Q.async(function*() {
var files = yield readdir('.');
return yield Q.all(files.map(function(file) {
return stat(file);
}));
})()
.done(console.log);
Promise + co - 最華麗解決方案
var co = require('co');
var fs = require('mz/fs');
co(function* () {
var files = yield fs.readdir('.');
return yield files.map(function (file) {
return fs.stat(file);
});
})
.then(console.log);
相關文章
- JavaScript非同步程式設計助手:Promise模式JavaScript非同步程式設計Promise模式
- JavaScript非同步程式設計的Promise模式JavaScript非同步程式設計Promise模式
- JavaScript非同步程式設計的6種方法JavaScript非同步程式設計
- javascript 非同步程式設計的5種方式JavaScript非同步程式設計
- Javascript非同步程式設計的4種方法JavaScript非同步程式設計
- Java、Rust、Go、NodeJS、TypeScript併發程式設計比較 - foojayJavaRustGoNodeJSTypeScript程式設計
- javascript非同步程式設計幾種方法簡介JavaScript非同步程式設計
- Javascript 非同步程式設計JavaScript非同步程式設計
- JavaScript非同步程式設計JavaScript非同步程式設計
- nodejs筆記-非同步程式設計NodeJS筆記非同步程式設計
- 簡單理解非同步程式設計(python)和非同步程式設計(nodejs)非同步程式設計PythonNodeJS
- 學哪種程式設計比較好,看看這六種語言!程式設計
- 探索Javascript非同步程式設計JavaScript非同步程式設計
- 【進階之路】併發程式設計(三)-非阻塞同步機制程式設計
- python 網路程式設計----非阻塞或非同步程式設計Python程式設計非同步
- 三種工廠模式的優劣比較模式
- 非同步程式設計:基於事件的非同步程式設計模式(EAP)非同步程式設計事件設計模式
- 應用程式圖示更換器 (非明碼比較)
- JavaScript深入淺出非同步程式設計三、async、awaitJavaScript非同步程式設計AI
- Javascript中的非同步程式設計JavaScript非同步程式設計
- JavaScript非同步程式設計筆記JavaScript非同步程式設計筆記
- 前端- JavaScript非同步程式設計Promise前端JavaScript非同步程式設計Promise
- Javascript非同步程式設計總結JavaScript非同步程式設計
- 談談 JavaScript 非同步程式設計JavaScript非同步程式設計
- JavaScript 非同步程式設計入門JavaScript非同步程式設計
- [譯] 非同步程式設計:阻塞與非阻塞非同步程式設計
- 向非程式設計師解釋JavaScript程式設計師JavaScript
- 向非程式設計師解釋 JavaScript程式設計師JavaScript
- ABAP, Java和JavaScript三種語言的比較JavaScript
- 你好,JavaScript非同步程式設計—- 理解JavaScript非同步的美妙JavaScript非同步程式設計
- 你好,JavaScript非同步程式設計---- 理解JavaScript非同步的美妙JavaScript非同步程式設計
- 深入理解nodejs中的非同步程式設計NodeJS非同步程式設計
- 一種非明碼比較程式的註冊------NS-SHAFT註冊碼破解 (9千字)
- JavaScript非同步程式設計:Generator與AsyncJavaScript非同步程式設計
- JavaScript非同步程式設計-基礎篇JavaScript非同步程式設計
- Javascript非同步程式設計的前世今生JavaScript非同步程式設計
- javascript非同步程式設計(一)-現狀JavaScript非同步程式設計
- JS 非同步程式設計六種方案JS非同步程式設計