我們剛開始學習nodejs時難免會寫出這樣的代碼,一旦嵌套過深,代碼將變得很難維護
var fs = require("fs")
var path = require("path")
// 原始函數
fs.readdir(path.normalize('/test'), function(err, files){
files.forEach(function(filename, index){
fs.readFile(path.normalize('/test/'+filename), 'utf-8', function(err, file){
// TODO
console.log(file)
})
})
})
利用事件的發佈/訂閱解除嵌套
var EventEmitter = require("events");
var emitter = new EventEmitter();
fs.readdir(path.normalize('/test'), function(err, files){
emitter.emit("iterate files", files);
})
emitter.on("iterate files", function(files){
files.forEach(function(filename, index){
emitter.emit("read file", path.normalize('/test/'+filename))
})
})
emitter.on("read file", function(filePath){
fs.readFile(filePath, "utf-8", function(err, file){
// TODO
console.log(file);
})
})