0

嗨,有一些nodejs代码如下:

console.log("Start", new Date().getTime()); 
var fs = require('fs');
for (var i = 1; i < 10; i++) {
    fs.readFile("file1.zip",function(err, data) {
      if(err)
        console.log("read error: ", err);
      else {
            fs.writeFile(__dirname + "/file2.zip", data , function(err) {
                if(err) {
                    console.log("write error: ", err);
                }           
            }); 
      }
    });
};
console.log("Finished", new Date().getTime());

我想得到所有工作完成后的开始和结束时间,但第二个日志似乎为时过早

4

2 回答 2

1

而不是console.log("Finished", new Date().getTime());你可能想尝试:

process.on('exit', function () {
  console.log("Finished", new Date().getTime());
});
于 2012-09-15T06:36:20.127 回答
0

由于节点的异步行为,第二个日志函数被调用得太早。你必须把它放在最后一个回调中:

console.log("Start", new Date().getTime());
var fs = require('fs');
for (var i = 1; i < 10; i++) {
  fs.readFile("file1.zip",function(err, data) {
    if(err) {
      console.log("read error: ", err);
    } else {
      fs.writeFile(__dirname + "/file2.zip", data , function(err) {
        if(err) {
          console.log("write error: ", err);
        }
        // Put it here
        console.log("Finished", new Date().getTime());
      }); 
    }
  });
};
于 2012-09-15T11:32:32.777 回答