博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs http 请求延时的处理方法(防止程序崩溃)
阅读量:6970 次
发布时间:2019-06-27

本文共 1193 字,大约阅读时间需要 3 分钟。

有时候因为接口没开,或者其他原因,导致http.request 请求延时,一直耗费资源不说,还会导致程序报错崩溃,延时处理其实也是一种错误处理。

直接上代码:

var APIGET = function (url, callback) {	debug("向API服务请求数据中...");	debug("url:"+url)//下面是发送请求时的延时处理,一般用不到	var requestTimer = setTimeout(function () {		req.abort();		debug('......Request Timeout......');	},5000);	var op = {		host:CONFIG.API_SERVICE_HOST,		port:CONFIG.API_SERVICE_PORT,		method:'GET',		path:url	};	var req = HTTP.request(		op,function(res) {			clearTimeout(requestTimer);//下面是请求接口数据,得不到回应时,我们关闭等待返回数据的状态,因为有5秒的定时器,//5秒内如果收到了完整的数据,http模块会自动跳转到res.on('end', function(){})//因为我们在res.on('end', function(){})的回调函数中clearTimeout(responseTimer),//清除了这个定时器,所以就不用担心在接受到数据后定时器还反复执行。			var responseTimer = setTimeout(function () {				res.destroy();				debug('......Response Timeout......');			},5000);			var recvData = "";			res.on('data', function(chunk) {				recvData += chunk;				// debug(recvData);			});			res.on('end', function() {				clearTimeout(responseTimer);				if (callback) {					callback(null, JSON.parse(recvData));				}				debug("请求结束");			});		});	req.on('error', function (e) {		if (callback) {			callback(e, null);		}	});	req.end();};

  

  

转载于:https://www.cnblogs.com/yourstars/p/6009368.html

你可能感兴趣的文章
Azure 文档 (SQL 数据仓库, Azure SQL 数据库文档)
查看>>
基于arm的多路温度采集控制系统(4)菜单界面
查看>>
大数据存储管理大趋势
查看>>
我的友情链接
查看>>
R478规划及实施—理想丰满、现实骨感
查看>>
FreeBSD scp xftp 无法使用时,考虑sftp。
查看>>
使用计划任务定时重启Server
查看>>
RedisCluster工具类
查看>>
我的友情链接
查看>>
htpasswd用法(即配置SVN密码加密)
查看>>
Android Service完全解析,关于服务你所需知道的一切(上)
查看>>
日志打印中的入参
查看>>
Microsoft Dynamics CRM 2013 配置之 添加配置 域证书服务器 和 ADFS
查看>>
your windows password does not match your Notes password
查看>>
TCP: time wait bucket table overflow解决方法
查看>>
CSS样式中设置table的cellspacing属性
查看>>
The method getTextContent() is undefined for the type Node
查看>>
iPhone动画属性详解
查看>>
fatal error: 'openssl/err.h' file not found
查看>>
zabbix实现 SAS 6/iR 型号 Raid信息监控
查看>>