我正在阅读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);
然后代码运行没有停止任何一秒钟。为什么?