私は理解していない私のnodejsコードforループ内のconst使用法、なぜこの動作ですか?
const saveDocument = co.wrap(function *(documentData, user, locale) {
var now = moment();
var creationDateLongString = now.format("YYYYMMDDHHmmss");
var creationDateShortString = now.format("YYYYMMDD");
var outputChildFolder = documentData.code + '_' + creationDateLongString + '_' + documentCounter;
var outputFolder = config.files.incomingDocumentsDir + '/' + outputChildFolder;
++documentCounter;
yield fs.mkdir(outputFolder)
var xmlFileName = documentData.code + "-" + creationDateLongString + ".xml";
var pdfFileName = documentData.code + "-" + creationDateLongString + ".pdf";
const pages = [];
for(var index=0;index < documentData.pages.length; ++index) {
const page = documentData.pages[index];
var data = new Buffer(page, "base64");
var dataEncoding = imageType(data).mime === "image/png" ? "png" : "jpg";
var fileName = "page" + index + "." + dataEncoding;
var targetFilePath = outputFolder + "/" + fileName
yield fs.writeFile(targetFilePath,data);
pages.push(fileName);
}
...
}
のループのためのものを持っているが、上記のコードでpage
は一度だけ割り当てられますなぜ最初の反復で、あり、そして他の反復中に同じ値を保持します。したがって、5ページある場合、その変数の最初のページのデータで5回終了します。
ノード4を特別な引数やポストプロセッサなしで実行しています。単にnpm run ...
私はおそらくここに単純なものをしないのですが、私はクライアント側のES6コードを実行するときに前にこれを見たことがない私のpackage.json
でnode src/main/myApp.js
にマップします。大きな違いは、クライアント側のコードがBabel + Webpackを通過し、サーバー側のコードがノードを介して直接実行されていることです。
小さな補遺:理由が「旧式の学校」という理由で、pages.forEach(....
の行に沿ったものではなく、それが何か小さな変更を加えた既存のコードであるためです。
私は同じ結果を得ていません。あなたのコードの詳細を表示してください。 (また... 'var' - >' let') –
var - > let stuffについても知っています。したがって、最後の段落で私の発言。ファイル全体をリファクタリングするつもりはありませんでした。 –