我有这段代码,其中应该每 5 秒调用一次函数 download
,但它似乎不起作用,因为所有图像都是同时下载的。
const download = function (uri, filename, callback) {
request.head(uri, function (err, res, body) {
request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
});
};
for (let i = 0; i < 100; i++) {
setTimeout(function () {
download(
'https://www.thispersondoesnotexist.com/image',
`images/image${i}.jpg`,
function () {
console.log('done');
});
},
5000
)
}
最佳答案
您的 setTimeout
函数是用 5000
硬编码的。这意味着您的循环从 0 运行到 99,并设置了 100 个超时,每个超时的等待时间为 5000。由于循环执行得非常快,因此执行的超时也非常接近。
你需要这样的东西:
setTimeout(function() {
...
},
5000 * i
)
这会将超时从 0 * 5000 分散到 99 * 5000 毫秒。
关于javascript - 无法在此 Node 中添加超时 http get 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62051032/