使用nodejs异步方法导致进程无法退出的问题
博客分类: nodejs nodejsjavascript
...
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);
});
});
}