Articles of settimeout

setTimeout不能按要求工作?

我正在使用socket.io连续发送一些数据从服务器到客户端。 所以我正在使用setTimeout函数定期发送数据。 而睡眠时间不是恒定的,所以我不使用setInterval。 但setTimeout不起作用。 我正在使用服务总线从我的工作者angular色获取一些数据,这些数据将定期发送到客户端。 这是我的代码。 var sleepTime; function requestQueue() { sleepTime = 0; console.log("REQUEST QUEUE STARTED"); console.log("SEND to WORKER ROLE"); // send the request to worker role var broadcastMessage = {} broadcastMessage.Channel = "World"; broadcastMessage.BufferSize = 10; sendMessage(socketToWorkerRole, broadcastMessage) receivePeriodicRecordsQueue(workerRoleToSocket); } //// function receivePeriodicRecordsQueue(queue) { serviceBusService.receiveQueueMessage(queue, function (error, receivedMessage) { if (!error) { if […]

NodeJs:如何处理大量的定时器?

我正在使用socket.io通过websockets发送数据包。 他们似乎不时消失。 所以我必须实施某种确认制度。 我的想法是立即回应一个ACK包的数据包。 如果服务器在给定的时间内没有收到ACK包,他将重新发送(最多3次,然后断开套接字)。 我的第一个想法是发送一个包后启动一个定时器(setTimeout)。 如果发生超时事件,则必须重新发送数据包。 如果ACK将到达,超时将被删除。 非常简单和简短。 var io = require('socket.io').listen(80); // … connection handling … function sendData(someData, socket) { // TODO: Some kind of counter to stop after 3 tries. socket.emit("someEvent", someData); var timeout = setTimeout(function(){ sendData(someData, socket); }, 2000); socket.on("ack", function(){ // Everything went ok. clearTimeout(timeout); }); } 但是我会有1k-3k的客户端连接很多的stream量。 我无法想象,同时运行的10k个定时器可以被NodeJS使用。 更糟糕的是,我读到NodeJS不会在没有时间的情况下触发事件。 […]

清除计时器而不将其存储在nodejs中

有没有办法清除一个setTimeout而不是将其存储在一个variables,然后将其传递给clearTimeout ? 或者以某种方式使setTimeout返回一个ID而不是一个对象,我会传递给clearTimeout ?

我如何在nodeJS上扩展setTimeout

我想在按下button1分钟后closures电脑,如果再次按下button,它会在上次按下后closures。 for(var i=1; i<=10; ++i){ setDelay(); } var nn; function setDelay(){ clearTimeout(nn); nn = setTimeout(function(){ console.log("shutdown"); }, 60000); } 但是我的代码也有另一个“setTimeout”。 它会正常工作吗?还是会损害我的其他setTimeout?

为什么延迟响应不工作没有一个HTML标签?

下面给出的是一个示例节点服务器代码。 //Lets require/import the HTTP module var http = require('http'); //Lets define a port we want to listen to const PORT=8080; //We need a function which handles requests and send response function handleRequest(request, response){ response.write("<p>hello</p>"); //version 1 response.write("hello"); //version 2 setTimeout(function(){ response.write("<p>world</p>"); //version 1 response.write("world"); //version 2 response.end(); }, 2000); } //Create a server var […]

我如何使function在后台运行?

我有这个代码定期调用loadfunction,这非常负载工作需要10秒。 问题是当load函数被执行时,它阻塞了主stream。 如果在执行load发送一个简单的GET请求(如运行状况检查),GET调用将被阻塞,直到load调用完成。 function setLoadInterval() { var self = this; this.interval = setInterval(function doHeavyWork() { // this takes 10 sec self.load(); self.emit('reloaded'); }, 20000); 我尝试了async.parallel,但仍然阻止了GET调用。 我试过setTimeout但得到了相同的结果。 如何使load在后台运行,以防止主stream? this.interval = setInterval(function doHeavyWork() { async.parallel([function(cb) { self.load(); cb(null); }], function(err) { if (err) { // log error } self.emit('reloaded'); }) }, 20000);

我怎样才能得到所有的计时器在JavaScript?

我在不同的类中创build了具有setTimeout()函数的不同定时器。 我想知道是否有办法让所有的超时时间在一起?

暂停一段时间的程序

我正在写一个基本上完成以下任务的程序。 阅读一个json文件。 将文件中的项目插入DynamoDB 以下是我的代码。 const AWS = require('aws-sdk'); var fs = require('fs'); var docClient = new AWS.DynamoDB.DocumentClient(); var i = 0; var allMovies = JSON.parse(fs.readFileSync('JsonFiles/Cars.json', 'utf8')); allMovies.forEach(function (user) { var params = { TableName: "CarsData", Item: { "id": user.id, "make": user.Make.toLowerCase(), "model": user.Model.toLowerCase(), "year": user.Year, } }; if (i % 100 == 0) { setTimeout(function […]

在setTimeout函数不起作用

有两个函数hello1()和hello2()。 function hello1(){ console.log('hello1'); } function hello2(){ console.log('hello2'); } setTimeout(hello1, 3000); setTimeout(hello2(), 3000); 在setTimeout(hello1, 3000); ,延迟3秒后打印“hello1”。 但在setTimeout(hello2(), 3000); ,立即打印“hello2”。 我想这是因为它必须在setTimeout中使用函数名。 如果我想像hello(1)那样在延迟3秒之后用参数执行一个函数呢? 因为我想传递参数到函数中,所以我不能只使用setTimeout中的函数名,比如setTimeout(hello1, 3000);

setTimeout <5 node.js时会发生什么

目的 当X> 0时setTimeout(fn, X)找出setTimeout(fn, X)的真实行为。 背景 我正在开发一个使用setTimeout()进行QPS(每秒查询)testing的工具。 我最近感到惊讶,当我做了1000个QPS的testing,花了大约5秒钟执行,当它应该采取1(不包括任何其他外部因素)。 例如,对于较低的QPS值,testing工作正常。 在调查的时候,我发现一些文章解释说,当setTimeout(fn, X)调用时,当X趋向于0时,如果X太小,它会被修剪到更高的值。 这个例子可以从2011年的这个问题中看到,旧规范指定如果setTimeout(fn, X)其中X <= 3),X将被自动设置为4。 setTimeout(fn,0)和setTimeout(fn,1)之间的区别? 这意味着两次执行setTimeout()之间我希望等待的最less时间是4毫秒。 如果我有setTimeout(fn, 1) ,它将被转换为setTimeout(fn, 4) 。 问题 我看到的每一篇文章都说了一些不同的东西,在我之前发布的问题中,不同的答案也是不同的。 总的来说,所有的结论似乎都是“ 没有结论,因为行为是非常不一致的 ”。 回到node.js,既然我指出的问题是相当古老的,我想要更新以下内容: 其中一个答案是X的最小值是1.这是否准确? 当X – > 0工作时setTimeout(fn, X)如何? 结论 我想了解更多有关setTimeout()信息,所以我可以在其周围构build我的代码。 链接到文件和文章的date或find答案将不胜感激。 谢谢您的帮助!