-1

它是如何工作的? 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]();
4

1 回答 1

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]);
于 2013-11-10T10:26:23.160 回答