Nodejs异步编程一——发布/订阅

版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
    })
})

猜你喜欢

转载自blog.csdn.net/u012769002/article/details/56934420