
正文
NodeJs http.get 方法请求时间过长问题处理!
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
NodeJs 获取网页内容 http.get 默认请求超时过长了,程序要卡死好一会。
根据网上资料现改造了一个带超时设置的获取网页内容方法。
主要方法使用 setTimeout 来超时,
代码如下:
// 获取指定网页,返回HTML
function getUrlHtml(url, fn_success, fn_error, timeout)
{
timeout = timeout || 2000;
var timeEvent;
var req = http.get(url, function(res){
var html = '';
res.setEncoding('utf-8');
res.on('data' , function(d){
window.clearTimeout(timeEvent);
html += d;
}).on('end', function(){
window.clearTimeout(timeEvent);
//var dom = jq(html);
return fn_success(html);
}).on('error', function(err){
window.clearTimeout(timeEvent);
fn_error(err);
});
}).on('error', function(err){
window.clearTimeout(timeEvent);
fn_error(err);
}); timeEvent = window.setTimeout(function(){
fn_error('time out!');
req.abort();
}, timeout);
}// 使用
getUrlHtml('http://www.xxx.com', function(html){
console.log(html);
}, function(err){
console.log(err);
}, 1000);







