Sve*_*obs 30 javascript asynchronous node.js
在过去的几个小时里,我一直试图绕过这个问题,但无法理解.我想我还是要习惯函数式编程风格;)
我编写了一个递归函数,遍历目录结构并对某些文件执行操作.此函数使用异步IO方法.现在我想在整个遍历完成时执行一些操作.
如何在执行所有parse
调用但仍使用异步IO功能后确保执行此操作?
var fs = require('fs'),
path = require('path');
function parse(dir) {
fs.readdir(dir, function (err, files) {
if (err) {
console.error(err);
} else {
// f = filename, p = path
var each = function (f, p) {
return function (err, stats) {
if (err) {
console.error(err);
} else {
if (stats.isDirectory()) {
parse(p);
} else if (stats.isFile()) {
// do some stuff
}
}
};
};
var i;
for (i = 0; i < files.length; i++) {
var f = files[i];
var p = path.join(dir, f);
fs.stat(p, each(f, p));
}
}
});
}
parse('.');
// do some stuff here when async parse completely finished
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
31878 次 |
最近记录: |