`

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

阅读更多

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);
      });
});
}

分享到:
评论
1 楼 di1984HIT 2014-09-01  
写的很好啊~~~

相关推荐

Global site tag (gtag.js) - Google Analytics