快速超时问题,在强制阻塞操作时总是得到响应



我正在尝试连接超时模块。

I've tried hitting a simple route from the browser
var timeout = require('connect-timeout');
app.use(timeout('1s'));
app.use(haltOnTimedout);
app.get('/timeout', function (req, res) { 
  for (var i = 0; i < 1111211111; i++) {}
  res.send('d') 
})
function haltOnTimedout(req, res, next){
  if (!req.timedout) next();
}

但是我总是回到浏览器中(我认为超时会阻止它)。有什么我没到这里来的吗?

问题是你的 for 循环在一秒钟内执行。试试这个:

app.get('/timeout', function (req, res) {
  setTimeout(function() {
    res.send('d');
  }, 5000);
});

在此示例中,路由在执行 5 秒超时函数之前不会返回响应。但是,连接超时中间件将在此之前停止执行。

最新更新