随笔 - 317, 文章 - 0, 评论 - 453, 阅读 - 114万
  博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

NodeJs http.get 方法请求时间过长问题处理!

Posted on   PHP-张工  阅读(1569)  评论(0编辑  收藏  举报

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);
复制代码

 

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2012-09-07 C# 拷贝文件夹
2012-09-07 windows服务操作 sc批处理
点击右上角即可分享
微信分享提示