node.js - setTimeout 在 nodeJS 中不起作用

标签 node.js settimeout

我正在编写一个基于 net 模块(家庭作业)的小型动态 HTTP 服务器,如果服务器用户没有调用 响应,它会发送 408 响应。 end() 两秒后。

无论我怎样尝试,函数都不会被调用。这是另一个代码,演示了我在我的程序中尝试做的事情:

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 毫秒,然后是一个很长的循环,但这不起作用。

为什么会这样?

最佳答案

永远不会调用回调,因为 setTimeout 是异步的。当这个“回合”结束时,计时器会被激活,你会在回合结束前清除超时。

您应该首先阅读 javascript 的事件驱动架构。 This tutorisal将是一个好的开始。这对于解决您的超时问题至关重要。

关于node.js - setTimeout 在 nodeJS 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14303762/

相关文章:

javascript - 如何不断用新数据刷新图表?

javascript - 无法理解 `setTimeout()` 中的最小超时值

javascript - 删除范围内值更改时的计时器

javascript - socket.io 在 x 秒/第一次尝试获取响应失败后停止重新发出事件

mysql - 将 TimeStamp 与 MySQL 一起使用,它返回服务器时间而不是本地时间

javascript - 在 JavaScript 中从 n 个对象和 r 个样本生成唯一的组合

javascript - setTimeout 如何在 javascript 中发挥作用?

javascript - 使用 jQuery.queue 代替 setTimeout

javascript - Node.js 相对需要执行脚本的路径

javascript - 并行执行中两个实例之间的 Protractor 延迟