目前我使用以下代码来处理超时:
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个回调将被调用超时情况?非常感谢
答案 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);