欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用nodejs异步方法导致进程无法退出的问题 博客分类: nodejs nodejsjavascript 

程序员文章站 2024-03-23 09:27:58
...

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

相关标签: nodejs javascript