NodeJs http.get方法は時間が長すぎる問題を要求して処理します.
1850 ワード
NodeJsはウェブページの内容http.getのデフォルトの要求を取得してタイムアウトしすぎて、プログラムはカードでしばらく死んでしまいます.
インターネットの資料によって、タイムアウト設定のあるウェブページのコンテンツ取得方法を改造しました.
主な方法はsetTimeoutを使用してタイムアウトします.
コードは以下の通りです
インターネットの資料によって、タイムアウト設定のあるウェブページのコンテンツ取得方法を改造しました.
主な方法は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);