我刚刚开始使用 Step,我正在尝试获取目录中所有文件的 stat
信息。
但是,当我在第二步中调用 fs.stat
时,我仍然需要完整路径。我怎样才能将它传递给下一个方法?我已经尝试过 this(directory)
但它没有按我的预期工作。
var getFiles = step.fn(
function readDir(directory) {
var p = path.join(__dirname, directory);
fs.readdir(p, this); // *** How do I pass 'directory' to the next method?
},
function readFiles(err, results, directory) {
if (err) throw err;
// Create a new group
var group = this.group();
results.forEach(function (filename) {
console.log(filename);
var p = path.join(__dirname, directory, filename);
// fs.stat requires a full path
fs.stat(p, group()); // Could be this.parallel() ??
});
}
);
// later...
var files = getFiles('data');
据我了解,readDir
被调用一次,然后 readFiles
被调用,但所有这些都作为 fs.readdir
的回调串联只需使用一组文件调用一次。
最佳答案
您可以使用范围在 getFiles 之外的变量(hacky),或者也可以使用闭包。
就我个人而言,我会从单步切换到异步(https://github.com/caolan/async)。异步中提供的 waterfall 方法才是您真正需要的。异步具有与步骤相同的功能以及更多功能。
关于node.js - 在 Node.js Step 模块中使用参数调用下一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7376090/