2012-09-15 59 views
0

喜有一定的NodeJS代码如下:如何知道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()); 

我想要得到的开始,当所有的工作都做了结束时间,但它似乎是第二个日志太早

回答

1

相反的console.log("Finished", new Date().getTime());你可能会想尝试:

process.on('exit', function() { 
    console.log("Finished", new Date().getTime()); 
}); 
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()); 
     }); 
    } 
    }); 
};