不完整/部分图像使用节点js下载

时间:2016-02-04 15:01:26

标签: javascript node.js

我正在以标准方式使用节点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循环中运行此代码时,保存的图像已损坏。更确切地说,不下载所有像素。只保存部分图像。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

好吧,我找到了问题的解决方案。原因是在图像完全写入磁盘之前,另一个线程启动,依此类推。 为了解决这个问题,我使用Q-IO库实现了promise。

renderer = Detector.webgl? new THREE.WebGLRenderer(): new THREE.CanvasRenderer();

但是我没有使用for循环,而是使用了自调用函数。