nodejs の非同期関数と、それらを作成する良い方法についてのちょっとした質問です。以下は、パラメータにリポジトリと拡張子名を取り、指定されたリポジトリ内の指定された拡張子を持つファイルのリストを返します
走る
$ 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 の非同期関数に関するこの素晴らしいチュートリアルを見つけました http://howtonode.org/understanding-process-next-tick