匿名函数+ javaScript

Anonymous Function + javaScript

本问题已经有最佳答案,请猛点这里访问。

如何工作?我不明白发生了什么事。我认为这是javascript而不是node.js拼图。但我找不到解决办法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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]();


此代码是JS函数的内联执行。可以内联定义和执行每个JS函数:

1
var result = (function(params) { /* some functionality */ })(params);

在您的情况下:

1
2
3
4
5
6
7
8
9
 var task = (function(file) {
            return function() {
                fs.readFile(file, function(err, text) {
                    if (err) throw err;
                    countWordsInText(text);
                    checkIfComplete();
                });
            }
        })(filesDir + '/' + files[index]);

也可以这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 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]);