var result = { controllers: [], views: [], models: [] };
var dirs = ['controllers', 'views', 'models'];
dirs.forEach(function(dirname) {
fs.readdir('./' + dirname, function(err, res) {
if (err) throw err;
result[dirname] = res;
// #2
});
});
// #1
在该片断的可变代码范围的问题,具有console.log(result);
在#1(见上文)上运行的,空的控制器,视图和模型阵列正如初始化将被记录。但是,我需要循环来填充相应的文件名通过fs
读取阵列。Node.js的:在回调
console.log(result);
#2将在第三次迭代后记录填充了所需值的result
对象。
我认为这与Node.js/JavaScript回调的异步特性有关。如果我不了解JavaScript变量作用域和异步方法是如何工作的,请原谅我,我都是新手。
迄今为止看起来不错。尽管这个解决方案结合了嵌套功能,但我还没有完全确信,但这仍然是一个合理的解决方案。干杯! – Daniel
@thejh什么是“pending”在回调中有正确值的保证? – Praveen