Node.js中的http.request超时回调

时间:2014-07-10 03:41:27

标签: javascript node.js timeout

目前我使用以下代码来处理超时:

var request = http.request(options);

request.setTimeout(30000, function(){
  //when timeout, this callback will be called
});


 request.on('error', function(e){
     //on error when request, this callback will be called
 });

问题是,当删除服务器响应速度慢且超时时,有时会调用超时回调,有时将调用超时回调和错误回调(错误内部的错误)回调是ECONNRESET - 连接重置)

如果代码调用两个回调函数,它将破坏我的代码逻辑,如何保证只有1个回调将被调用超时情况?非常感谢

1 个答案:

答案 0 :(得分:3)

使用计数器变量,这是一种快速简便的方法:

function onProblem(e) {
  if (onProblem.count > 0)
    return;

  ++onProblem.count;

  if (e) {
    // it was an error
  }
}
onProblem.count = 0;

var request = http.request(options);
request.setTimeout(30000, onProblem);
request.on('error', onProblem);