node.js - 在 Node.js Step 模块中使用参数调用下一步

标签 node.js

我刚刚开始使用 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/

相关文章:

javascript - 使用 Gulp 上传资源到 s3

json - 尝试在不使 Node.js 服务器崩溃的情况下解析 JSON

javascript - 如何在 Node.js 中转义双引号

javascript - Symbol数据类型的应用

javascript - 将嵌套的json存储到 Node 中的mysql数据库中

android - 在 Android 和 Node.js 之间传输大文件

node.js - 安装cordova时出错

Node.js:在没有尾随换行符的情况下打印到控制台?

input - nodejs如何从标准输入读取击键

javascript - 使用 Node 创建文件并使用提示输入替换变量