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());

すべての作業が完了した開始時刻と終了時刻を取得したいのですが、2 番目のログが早すぎるようです

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

ノードの非同期動作のため、2 番目のログ関数の呼び出しが早すぎます。最後のコールバック内に配置する必要があります。

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 に答える