我有以下代码,它抓取 6 个 URL 之一,剥离文件名,创建文件路径,将图像文件保存到磁盘,将其发送到 MongoDB GridFS。唯一改变的是图像大小:32px、64px、128px、256px、512px、1024px。Bruteforce 方法就是复制粘贴这段代码 6 次,你可以想象那会是多么的一团糟。
如何将此代码放在 for 循环中,每次循环迭代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 循环回调未按预期工作。TLDR:因为 node.js 和 javascript 是单线程的。