用node从网上下载图片,下好一张再请求下一张,程序老是卡住不动了,还是随机卡在某个图片的,没有报错
发布于 7 年前 作者 bluedrinker 2542 次浏览 来自 问答

用node从网上下载图片,下好一张再请求下一张,程序老是卡住不动了,还是随机的,没有报错,但也没退出运行,就是不动了,打断点也不会走进来,是什么原因呢,下载的代码大概是这样

							function download() {
                                http.get(picUrl, function (res) {
                                    var code = res.statusCode;
                                    console.log(picUrl+code);
									
                                    if (code == "404") {
                                        console.log("跳过下载"+picPath);
                                        res.resume();
                                        next();
                                        return;
                                    }
									
                                    res.setEncoding('binary');//转成二进制
                                    var content = '';
                                    res.on('data', function (data) {
                                        content+=data;
                                    });
									
                                    res.on('end', function () {
                                        fs.writeFile(picPath,content,'binary', function (err) {
                                            if (err) {
                                                console.log("写入错误"+err.message);
                                            }
                                            next();
                                        });
                                    });
									
                                }).on("error",function(err) {
                                    console.log(err.message+"重新请求");
                                    setTimeout(function(){
                                        download();
                                    },2000);
                                });
							}

next()里会调用download(), 是内存原因还是网络原因,或者是其他原因呢

3 回复

上面的代码省了一些变量,大概是这样的

完全可以用 pipe

来自酷炫的 CNodeMD

@zswnew 感谢,不会卡顿了,还是官方的考虑周全些

回到顶部