我正在阅读Nodejs的教程,但我无法理解这段代码,请给我解释一下。
function async(arg, callback) {
console.log('do something with \''+arg+'\', return 1 sec later');
setTimeout(function() { callback(arg * 2); }, 1000);
}
function final() { console.log('Done', results); }
var items = [ 1, 2, 3, 4, 5, 6 ];
var results = [];
var running = 0;
var limit = 2;
function launcher() {
while(running < limit && items.length > 0) {
var item = items.shift();
async(item, function(result) {
results.push(result);
running--;
if(items.length > 0) {
launcher();
} else if(running == 0) {
final();
}
});
running++;
}
}
launcher();
此代码产生 run 2x 然后暂停一秒钟然后再次运行 2x 直到 items 数组中没有项目。
但是当我在 setTimeout 中删除匿名函数时:
setTimeout(callback(arg*2), 1000);
然后代码运行没有停止任何一秒钟。为什么?