nodejs中的asynchronous函数

这只是关于nodejs中asynchronous函数的一个小问题,也是创build它们的好方法。 以下内容接受参数存储库和扩展名,并返回给定存储库中给定扩展名的文件列表

跑步

$ node app /path/to/some/reposity someExtension 

module.js文件

 //modules.js var fs = require('fs'); var path = require('path'); module.exports = function(dir, ext, callback){ //do something fs.readdir(dir, function(err, data){ if(err){ //EDIT process.nexTick(function(){ callback(err); }); // } if(data){ var compteur = 0; var block = []; for(var i =0 ; i < data.length ; i++){ if(path.extname(data[i]).slice(1) == ext){ block[compteur]= data[i]; compteur++; } } //EDIT process.nextTick(function(){ callback(null, block); }); // } }); }; 

app.js文件

 //app.js var dir = process.argv[2]; var ext = process.argv[3]; var module = require('./module'); module(dir, ext, function(err, data){ if(err) { throw err;} var dl = data.length; for(var i = 0 ; i < dl ; i++){ console.log(data[i]); } }); 

我只想知道这是不是做事情的好方法,或者是否有更好的方法。 提前致谢。

我在NodeJS中find了关于asynchronous函数的很好的教程http://howtonode.org/understanding-process-next-tick

asynchronous编程的标准方法是使用callback,这就是你正在做的事情。 由于callback嵌套在一个asynchronous函数中,一旦callstack为空,它将被排队。

另外,不要命名任何variablesmodule 。 这是一个不应该被覆盖的全局variables。