它是如何工作的?
function(){...}();
我无法理解发生了什么。我认为这不是javascript node.js
拼图。但我找不到解决方案。
fs.readdir(filesDir, function(err, files) {
if (err) throw err;
for (var index in files) {
**var task = (function(file) {**
return function() {
fs.readFile(file, function(err, text) {
if (err) throw err;
countWordsInText(text);
checkIfComplete();
});
}
**})(filesDir + '/' + files[index]);**
tasks.push(task);
}
for (var task in tasks) {
tasks[task]();
答案 0 :(得分:1)
此代码是js函数的内联执行。每个js函数都可以内联定义和执行:
var result = (function(params) { /* some functionality */ })(params);
在你的情况下:
var task = (function(file) {
return function() {
fs.readFile(file, function(err, text) {
if (err) throw err;
countWordsInText(text);
checkIfComplete();
});
}
})(filesDir + '/' + files[index]);
也可以写成:
// define the funktion
var task = function(file) {
return function() {
fs.readFile(file, function(err, text) {
if (err) throw err;
countWordsInText(text);
checkIfComplete();
});
}
};
// execute the function with parameter
var result = task(filesDir + '/' + files[index]);