如果服务器用户在两秒钟后没有呼叫response.end()
,我正在编写一个基于net
模块(作业分配)的小动态HTTP服务器,该模块发送408
响应。setTimeout在nodeJS中不起作用
无论我试过什么,函数都不会被调用。以下是一个演示是我的尝试在我的计划做另一代码:
var NET = require("net");
var server = NET.createServer(function(socket){
console.log("In connectionHandler");
socket.on('data',function(data) {
console.log("New data");
var timer = setTimeout(function(end){
console.log("INSIDE TIMEOUT FUNCTION");
if (end) {
return;
}
throw new ERROR.ServerError('408',' Request Timeout','The \
server has timedouted');
},10,true);
for (var t = 0 ; t < 100000000000 ; t++){}
clearTimeout(timer);
})
});
server.listen(4000, function() {
console.log("server bound");
});
所以,超时时间设置为10毫秒,接着一个很长的循环,但这种不工作。
为什么会发生这种情况?
'for(var t = 0; t <100000000000; t ++){}' - 到底什么? – ThiefMaster
在进程终止之前给setTimeout时间执行回调函数 – Yotam
主动等待*总是*一个可怕的和错误的东西,除非你在一个你不是的微控制器上。 – ThiefMaster