在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);
}
function getFiles(){
var arr =[];
arr.push('12.gif');
arr.push('13.gif');
arr.push('14.gif');
return arr;
}
答案 0 :(得分:2)
匿名函数只会在不断重新创建和垃圾回收时影响性能。在这种情况下,将函数永久存储在内存中会使事情变得更快。
如果你没有每秒呼叫deleteMedia一千次,你可能根本不会注意到你的表现有所下降。
但是在你的情况下你可以跳过整个IIFE:
function deleteMedia(req) {
var files = getFiles();
fs.readdir(folderPath, function (err, fls) {
console.log(files);
});
}
答案 1 :(得分:0)
在这种情况下,您不需要在括号中执行块,它不是异步部分。 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);
})
}
}