版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012769002/article/details/56934420
我们刚开始学习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);
})
})