使用nodejs异步方法导致进程无法退出的问题

本文介绍了一个使用Node.js开发的简单网络爬虫程序,该程序能够抓取网页中的图片,并通过http.get异步方法下载到本地。但在处理完所有图片后,程序有时不会自动退出,需要手动干预。作者尝试了多种方案仍未解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows环境下使用nodejs开发了一个简单的网络蜘蛛,抓取网页中的图片。所以使用了http.get异步方法来下载指定的图片文件。多个图片的时候,http请求是串行发出的,下载完一个文件并生成本地文件以后再发起下一个http请求,等到最后一个图片下载完并生成本地文件以后,所有处理都结束了,按理说整个程序应该退出,但是有时候程序会停在那里,只有手动用CTL + C才能退出。试了很多种设计思路,但是问题仍然无法解决,最后强制调用了process.exit(0)才解决。

 不过这个问题不是一直出现,有的网站url一直出现,有的url一切正常,不知道是什么原因。

function getpic(){
 
 var f=fs.createWriteStream('./pic/' + j + ".jpg"); 
 
 var req = http.get(srcs[j-1],function(res)
 {
      res.on('data', function (chunk)
      {  
           f.write(chunk);
      });    
      res.on('end',function()
      {
           f.end();
           console.log(j+'.jpg OK!');
           if(j < srcs.length){
               ++j;
               getpic();
           }else{
                console.log('...download end...');
                process.exit(0);
           }
           return;
       }); 
      res.on('error',function(e){
          console.log(e.message);
      });
});
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值