我正在以标准方式使用节点js从站点下载图像。
var download = function (uri, filename, callback) {
request.head(uri, function (err, res, body) {
console.log('content-type:', res.headers['content-type']);
console.log('content-length:', res.headers['content-length']);
request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
});
};
但是当我在for循环中运行此代码时,保存的图像已损坏。更确切地说,不下载所有像素。只保存部分图像。
有没有办法解决这个问题?
答案 0 :(得分:0)
好吧,我找到了问题的解决方案。原因是在图像完全写入磁盘之前,另一个线程启动,依此类推。 为了解决这个问题,我使用Q-IO库实现了promise。
renderer = Detector.webgl? new THREE.WebGLRenderer(): new THREE.CanvasRenderer();
但是我没有使用for循环,而是使用了自调用函数。