Javascript 在nodejs中将参数传递给回调函数的最佳方法

Javascript 在nodejs中将参数传递给回调函数的最佳方法,javascript,node.js,callback,jquery-callback,Javascript,Node.js,Callback,Jquery Callback,在nodejs中,将参数传递给回调函数的最佳方式是什么?我正在回复匿名函数,但有人告诉我匿名函数会降低性能 我有一个函数,它调用另一个函数(getFiles)来获取文件列表,然后读取文件夹中的文件,并比较文件夹中的文件是否与getFiles函数返回的文件匹配 function deleteMedia(req) { var files = getFiles(); (function (parms) { //used to pass files fs.readdir(

在nodejs中,将参数传递给回调函数的最佳方式是什么?我正在回复匿名函数,但有人告诉我匿名函数会降低性能

我有一个函数,它调用另一个函数(getFiles)来获取文件列表,然后读取文件夹中的文件,并比较文件夹中的文件是否与getFiles函数返回的文件匹配

function deleteMedia(req) {
    var files = getFiles();
    (function (parms) { //used to pass files
        fs.readdir(folderPath, function (err, fls) {
            console.log(parms);
        })
    })(files);
}


匿名函数只有在不断被重新创建和垃圾收集时才会影响性能。在这种情况下,将函数永久存储在内存中会使事情变得更快

如果每秒不调用deleteMedia一千次,您可能根本不会注意到性能的下降

但是在你的情况下,你可以跳过整个人生:

function deleteMedia(req) {
    var files = getFiles();
    fs.readdir(folderPath, function (err, fls) {
        console.log(files);
    });
}

在这种情况下,不需要执行括号中的块,它不是异步部分。不过readdir是异步的,因此您可以回调它

function deleteMedia(req) {
    var files = getFiles();
    for (var i in files){
        fs.readdir(files[i], function (err, fls) {
            // do something with output asynchronously
            console.log(fls);
        })
    }
}

您如何调用它?在这种特殊情况下,您可以在回调中直接使用
文件
function@thefourtheye:您能告诉我如何在回调函数中直接使用
文件
吗?我不能在
fs.readdir(files[I],function(err,fls)上使用
files[]I
{
,我需要传递我要读取的文件夹的路径。由于某种原因,当我说
console.log(files)时,文件对我来说是未定义的。我不确定是否遗漏了任何内容。您使用的是其他getFiles()吗方法,而不是您在问题中发布的方法?不。如果我调试,我确实会在文件数组中看到值,但当我进入
readdir()时文件
未定义。你是对的,塞巴斯蒂安。我不确定我之前犯了什么错误,但现在我可以访问
readdir
中的
文件。我真的很困惑,因为
closure
概念不起作用。
function deleteMedia(req) {
    var files = getFiles();
    for (var i in files){
        fs.readdir(files[i], function (err, fls) {
            // do something with output asynchronously
            console.log(fls);
        })
    }
}