Tag: settimeout

setTimeout在nodeJS中不起作用

我正在写一个基于net模块(家庭作业分配)的小型dynamicHTTP服务器,如果服务器用户在两秒钟后没有调用response.end() ,则发送408响应。 不pipe我尝试了什么,函数都没有被调用。 下面是另一个代码,演示了我在程序中所做的事情: 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, […]

node.js和setTimeout和setInterval – 了解事件循环

为了理解事件循环和函数setTimeout和setInterval,我编写了下面的程序。 该程序的输出是不同于我的预期: 输出是: In F In L Padalia outside all callback1 callback2 From Interval:0 From Interval:1 From Interval:2 From Interval:3 问题: 为什么“全部”不是先执行? 为什么间隔总是最后执行? 有人可以向我解释整个程序的执行吗? 在退出程序之前等待一段时间,为什么? 程序: var Fname = undefined; var Lname = undefined; var count = 0; function F(callback){ console.log("In F"); Fname = "Rushabh"; if(Fname != undefined && Lname != undefined) { console.log(Fname); } […]

在Node.js中,setTimeout等待时间过长

我想我有一个误解的是什么setTimeout完全在JavaScript中。 我有这个脚本: function recursiveFibonacci(n) { if ( n === 0 ) { return 1; } else if ( n === 1 ) { return 1; } else { return recursiveFibonacci(n-1) + recursiveFibonacci(n-2); } } setTimeout( () => {console.log("one second");}, 1000); console.log(recursiveFibonacci(42)); 我期望发生的事情是,recursion斐波纳契开始突破斐波那契数列中的第43个值。 我的电脑需要4秒左右的时间。 所以,工作1秒后,评估将会中断,控制台将logging: one second 然后约3秒钟后login: 433494437 相反,在4秒后,控制台会logging: 433494437 one second 一次全部。 这是为什么? 我怎样才能让setTimeout工作? […]

为什么`setTimeout`不能在Node.js中重现?

var arrayProcessTimeout; arrayProcessTimeout = setTimeout(function() { console.log('hard'); return null; }, 50); 这是我在Node.js的代码,有人会期望它不断地输出..但事实并非如此。 它输出一次,就是这样。

Node.js中的setTimeout细微差别

我想了解如何callback函数在setTimeout函数内工作。 我知道的格式是: setTimeout(callback, delay)我写了一个小testing脚本来探讨这一点。 test1.js console.log("Hello") setTimeout(function () { console.log("Goodbye!") }, 5000) console.log("Non-blocking") 这个按预期工作,打印Hello <CRLF> Non-blocking ,然后5秒钟后打印Goodbye! 然后我想这样的setTimeout之外的function: console.log("Hello") setTimeout(goodbye(), 5000) console.log("Non-blocking") function goodbye () { console.log("Goodbye") } 但它不起作用, Non-blocking和Goodbye!之间没有5秒的延迟Goodbye! ,他们一个接一个的打印。 它工作,如果我从超时的函数调用中删除方括号,如下所示: setTimeout(goodbye, 5000) 但这对我来说没有意义,因为这不是你如何调用一个函数。 此外,如果它看起来像这样,你将如何传递参数给函数? var name = "Adam" console.log("Hello") setTimeout(goodbye(name), 5000) console.log("Non-blocking") function goodbye (name) { console.log("Goodbye "+name) } 我的问题是,当函数中有参数时,为什么它不工作,尽pipe事实上setTimeout是用正确的语法提供了一个有效的函数?

在node.js服务器中使用多个setInterval(或setTimeOut)

我可以在node.js中为每个连接的客户端使用setInterval(或setTimeout)吗? 节点如何pipe理这个? 会有性能问题吗? 我想不时地在每个客户端上运行一个函数,我不知道如何去做,而不使用setInterval。

如果我在nodejs中的私有方法中调用module.exports.public_method,是否有副作用?

我想知道这是否是在Node.js中执行recursionsetTimeout的正确方法? module.exports = { connect: function(callback) { amqp.connect(config.queue.url, function(err, connection) { if (err) { console.error("[AMQP]", err.message); return setTimeout(module.exports.connect, 1000); // keep reconnecting } }); } } 我试图在Node.js中实现重新连接机制。 但我不确定这一行是否会在JavaScript中产生副作用? return setTimeout(module.exports.connect, 1000);

zombie.js和socket.io(node.js)

我想用zombie.js无头浏览器testing我的node.js / socket.io应用程序。 不幸的是,当zombie.js应用程序连接到我的应用程序,它报告负载的连接/断开事件。 例如。 Zombie: Firing timeout 234, delay: 1000 Zombie: GET http://localhost:8000/socket.io/1/?t=1313487267750&jsonp=68 Zombie: GET http://localhost:8000/socket.io/1/?t=1313487267724&jsonp=69 connected connected connected Zombie: Firing timeout 237, delay: 2000 Zombie: Firing timeout 226, delay: 16000 Zombie: Firing timeout 218, delay: 25000 disconnected 看来僵尸不尊重超时延迟,所以我想知道这是否是一个原因? 有没有人试图用socket.io使用僵尸或可以告诉我为什么僵尸似乎立即超时,而不是等待规定的时间?

用于Node.js的Cron类库在特定时间触发事件

我正在使用Node.js的Web应用程序。 我想在特定的时间开火。 我知道setTimeout并计算当前时间的偏移量。 但是,这没有考虑到时区等。 我的问题是,是否有一个npm模块,可以使这个触发事件(或处理通常的时钟/时间)的过程更容易? 举例来说,我可以这样做: lib.fireEvent("1:00pm PST", event) ,每天下午1点将会触发事件。

如何在改变系统时间时用setInterval / setTimeout解决nodejs稳定的bug

在当前稳定版本的node.js v0.10.33中, 有一个错误 ,在将系统时间设置为过去时,setTimeout / setInterval不再触发。 运行这段代码来看看我的意思: var i = 0; var handle = setInterval(function() { console.log(++i); }, 1000); 然后在运行时将系统的时间更改为过去,如果在Windows或Linux上不重要。 间隔/超时不会再触发。 在将时间引向未来时,节点performance得非常好,并保持间隔运行。 这个bug在节点v0.11.3中得到了修复,我不能使用它,因为它不稳定。 我试过像timer-shim和nanotimer这样的模块,但是它们在内部也使用了setInterval / setTimeout,因此也有同样的问题。 就目前来说,我怎样才能以最好的方式绕过这个节点错误,而没有时髦的猴子修补呢?