【发布时间】:2023-03-25 09:51:01
【问题描述】:
我有以下代码,它抓取 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 loop callback not working as expected。 TLDR:因为 node.js 和 javascript 是单线程的。
【问题讨论】:
标签: javascript node.js