6 つの URL のいずれかを取得し、ファイル名を削除し、ファイルパスを作成し、画像ファイルをディスクに保存し、MongoDB GridFS に送信する次のコードがあります。変更されているのは画像サイズのみです: 32px、64px、128px、256px、512px、1024px。ブルートフォース アプローチは、このコードを 6 回コピー アンド ペーストするだけで、どれだけ混乱するか想像できます。
このコードを for-loop 内に配置するにはどうすればよいですか?ループの反復ごとに32が64、128、256、512、1024に変わりますか?
var filename32 = image32.replace(/^.*[\\\/]/, '');
var filepath32 = path.join(__dirname, filename32);
var writestream32 = gfs.createWriteStream({ filename: filename32 });
var imageStream32 = request(image32).pipe(fs.createWriteStream(filepath32));
imageStream32.on('close', function() {
fs.createReadStream(filepath32).pipe(writestream32);
fs.unlink(filepath32);
});
アップデート。
わかりましたので、この問題は反復アプローチを使用して解決することは不可能です。詳細はこちら: node.js: while loop callback not working as expected . TLDR : node.js と javascript はシングル スレッドであるためです。