Javascript 在nodejs中将参数传递给回调函数的最佳方法
在nodejs中,将参数传递给回调函数的最佳方式是什么?我正在回复匿名函数,但有人告诉我匿名函数会降低性能 我有一个函数,它调用另一个函数(getFiles)来获取文件列表,然后读取文件夹中的文件,并比较文件夹中的文件是否与getFiles函数返回的文件匹配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(
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);
})
}
}