nodejs http 请求延时的处理方法(防止程序崩溃)
有时候因为接口没开,或者其他原因,导致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();
- };
nodejs http 请求延时的处理方法(防止程序崩溃)的更多相关文章
- nodejs request-promise 请求返回中文乱码
nodejs request-promise 请求返回中文乱码 解决方法: 具体步骤如下: 1. 引用iconv-lite 进行转码. 2. 请求时要写参数:encoding:null 3. 对bod ...
- (转)ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...
- ueditor上传大容量视频报http请求错误的解决方法
故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报"http请求错误"的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器 ...
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- php发送post请求的三种方法示例
本文分享下php发送post请求的三种方法与示例代码,分别使用curl.file_get_content.fsocket来实现post提交数据,大家做个参考. php发送post请求的三种方法,分别使 ...
- ios想要取消执行延时调用的方法
想要取消执行延时调用的方法: [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideDia ...
- (一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
(一)----使用HttpClient发送HTTP请求(通过get方法获取数据) 一.HTTP协议初探: HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是 ...
- TCP服务端开发为例--web开发不同url请求走不同control方法
拿java的web开发为例子,相信有很多小伙伴是做j2EE开发的,htpp请求,json数据传输都是工作中经常用的,查询请求,添加请求,修改请求前端配个url,例如https://localhost/ ...
- 【MySQL】锁——查看当前数据库锁请求的三种方法 20
MySQL提供了查看当前数据库锁请求的三种方法:1. show full processlist命令 观察state和info列 2. show engine innodb status\G ...
随机推荐
- Read/Write file in Android
http://www.cnblogs.com/freeliver54/archive/2011/09/16/2178910.html
- python 的 *args 和 **kwargs
Python支持可变参数,通过*args和**kwargs来指定,示例如下: def test_kwargs(first, *args, **kwargs): print 'Required a ...
- 黑马程序员——【Java高新技术】——反射机制
---------- android培训.java培训.期待与您交流! ---------- 一.概述 1.Java反射机制:是指“在运行状态中”,对于任意一个类,都能够知道这个类中的所有属性和方法: ...
- Ubuntu远程连接windows
一般情况下都是使用windows系统,通过mstsc远程连接linux系统,但对于一些linuxer来说,有时候需要远程连接一下windows,最后采用的是rdesktop,一个非常好用的工具 sud ...
- 有一个无效 SelectedValue,因为它不在项目列表中。
在项目中出现绑定下拉框报错的问题 1:可能是先赋值,再绑定数据的问题 检查代码,是否有在数据绑定钱进行了赋值.
- Objective-c——UI基础开发第十一天(UICollectionView)
一.知识点 1.UICollectionView的dataSource .delegate 2.UICollectionView多组数据和单组数据的展示 3.UICollectionView.UICo ...
- Linux下获得系统时间的C语言实现
Linux下获得系统时间的C语言的实现方法 #include<time.h> //C语言的头文件#include<stdio.h> //C语言的I/O int main() ...
- Sublime Text 2 配置
设置Python的Tab缩进为四个空格,打开一个Py文件 # Preferences---->Settings-More---->Syntax Specific-User # 贴入如下代码 ...
- boost -- scoped_lock V.S. mutex lock/unlock —— why scoped_lock is recommanded?
why scoped_lock is recommanded? 其实,这和RAII idiom变流行是一样的原因:因为你可以确保任何情况下离开执行范围都会解锁mutex. 注意,这不仅仅是说你可能忘记 ...
- windows github 命令行使用
1.下载git客户端工具,以下2个网站一样的https://git-for-windows.github.io/https://git-scm.com/download/win/ 2.初始化ssh-k ...