-1

仕事はどうですか? function(){...}();何が起こっているのか理解できません。node.jsこれはパズルではなくJavaScriptだと思います。しかし、私は解決策を見つけることができません。

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 に答える