【发布时间】:2013-11-22 04:41:54
【问题描述】:
它是如何工作的?
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]();
【问题讨论】:
-
它定义并立即调用该函数。它周围的括号通过将行转换为语句(而不是声明)来实现这一点。以前有人问过这个问题,但我现在找不到直接链接。
-
如果你有兴趣,这段代码的原因是为了让文件保持在当前迭代的本地。没有它,文件的范围会太广,所有回调都会看到最后一个文件,而不是他们自己的。
标签: javascript