Javascript 节点同步功能

Javascript 节点同步功能,javascript,node.js,Javascript,Node.js,嗨,我在执行一个函数时遇到了很大的麻烦。 我正在尝试浓缩、编译和缩小一些js和coffeescript,当我硬编码时,它们工作得很好。我的问题是我现在创建了一个搜索文件并返回带有文件路径的数组的函数。但我无法以同步方式获得函数。我试过很多东西,就是想不出来 在这个阶段,这就是我所拥有的 此函数用于编译coffee脚本。async.series也会调用此函数,该函数工作正常。您可以看到它调用了getFiles,它应该返回数组。但回调似乎是在数据返回之前触发的 function compileCof

嗨,我在执行一个函数时遇到了很大的麻烦。 我正在尝试浓缩、编译和缩小一些
js
coffeescript
,当我硬编码时,它们工作得很好。我的问题是我现在创建了一个搜索文件并返回带有文件路径的数组的函数。但我无法以同步方式获得函数。我试过很多东西,就是想不出来

在这个阶段,这就是我所拥有的

此函数用于编译coffee脚本。async.series也会调用此函数,该函数工作正常。您可以看到它调用了getFiles,它应该返回数组。但回调似乎是在数据返回之前触发的

function compileCoffee() {

    async.series([
        function(callback) {
            data = getFiles("coffee");
            callback(null, data)
        },
        function(data, callback) {
            console.log(data)
            shell.echo(grey("Compiling CoffeeScript files .... "));
            if (shell.cat(data).exec('coffee -sc').exec('uglifyjs --compress', {
                    silent: true
                }).to('./public/assets/js/app.min.js').code !== 0) {
                shell.echo(red('Coffee script compile error'));
                shell.exit(1);
            }
            shell.echo(green("CoffeeScript files compiled succesfully"));
        },
    ], () => {});
} 
这就是获取文件的功能。我可能会把这一切都搞错,如果我是,请让我知道一个更好的方法。如果没有,你知道如何让它工作将是惊人的

function getFiles(filetype, callback) {

    var files = [];

    // Walker options
    var walker = walk.walkSync('./frontend/js', {
        followLinks: false
    });

    walker.on('file', function(root, stat, next) {
            // Add this file to the list of files
        var ext = stat.name.substr(stat.name.lastIndexOf('.') + 1);
        if (ext == filetype) {
            files.push(root + '/' + stat.name);
        }
        next();
    });

    walker.on('end', function() {
        console.lof(files)
        return files
    })

}

请提供一些帮助:D谢谢

getFiles
实际上没有返回任何内容,但它确实需要一个回调,当
getFiles
完成时应该调用该回调。将
async
回调传递给
getFiles
(或创建另一个调用回调的函数):

您需要在
getFiles
函数中实际调用此回调:

walker.on('error', function(error) {
    console.log(error)
    callback(error);
});
walker.on('end', function() {
    console.log(files)
    callback(null, files);
});

getFiles
实际上并没有返回任何内容,但它会接受一个回调,当
getFiles
完成时应该调用该回调。将
async
回调传递给
getFiles
(或创建另一个调用回调的函数):

您需要在
getFiles
函数中实际调用此回调:

walker.on('error', function(error) {
    console.log(error)
    callback(error);
});
walker.on('end', function() {
    console.log(files)
    callback(null, files);
});

嘿,很抱歉打扰您,但是当我在以下系列中记录数据时,它会返回一个函数,显示为[function]@AlexKirwan which
console.log
?也许您可以创建另一个问题,其中包含此问题的详细信息。很抱歉打扰您,但当我这样做时,当我在以下系列中记录数据时,它会返回一个函数,显示为[function]@AlexKirwan which
console.log
?也许你可以创建另一个问题,其中有这方面的细节