Tag: 计时器

如何在JavaScript中实现一个精确的,跨平台的游戏循环?

我试图在node.js和现代web浏览器上每隔10ms运行一次游戏循环。 Chrome版本运行良好(精度保持在1ms以内): var nextUpdate = Date.now(); function loop() { console.log(Date.now()); // update() here nextUpdate += 10; // ms setTimeout(loop, Math.max(0, nextUpdate – Date.now())); } loop(); 但是,在Firefox和node.js中setTimeout的准确性要低得多。 即使0ms的超时也需要比平均10ms的时间更长的时间来执行,这会导致循环完全不同步。 在javascript中实现一个精确的跨平台游戏循环的更好的方法是什么?

对于第二次调用,Node.js setInterval和nextTick不准确

让我先说这个,说我完全知道JS中的计时器是不准确的 。 这不是重点。 我对以下行为更感兴趣的原因是好奇心。 我正在调度一个函数通过setInterval或setTimeout运行每x毫秒。 我也测量了一个毫秒准确度的实际时间。 这是代码: var counter = 0; var start = Date.now(); var last = start; var now; var step = 10; var tick = function () { now = Date.now(); console.log(counter++, now, now – last); last = now; if (counter > 10) { clearInterval(tick); } }; setInterval(tick, step); Ubuntu 15.04(3.19.0-15-generic)上的Node.js 4.0.0的输出如下: […]

Node.js类的recursion发射

所以,我正在尝试Node.js上的Ticker,Event Emitter练习 我有这个代码: var EventEmitter = require('events').EventEmitter, util = require('util'); // Ticker Constructor var Ticker = function (interval) { this.interval = interval; this.pulse = null; } util.inherits(Ticker, EventEmitter); Ticker.prototype.start = function() { this.emit('start'); this.tick(); } Ticker.prototype.stop = function() { if (this.pulse != null) clearTimeout(this.pulse); this.emit('stop'); } Ticker.prototype.tick = function() { this.emit('tick'); this.pulse = setTimeout(this.tick, this.interval); […]

如何在使用Jquery的特定时间之后自动销毁DOM元素

是否可以在指定的时间后删除一个HTML元素? 另外,如果一个条件满足在指定的时间之间,我需要停止计时器删除元素。 示例代码, <ul> <li data-id="25"> <a class="online">Marco</a> </li> <li data-id="53"> <a class="online busy">Polo</a> </li> </ul> 当用户Marco离线时,我需要在10秒后删除Marco的<li> ,但是如果他在10秒内恢复在线状态,应该停止计时器,并且不应该移除<li> 。 Socket处理用户的在线状态: socket.on('user_connected', function(data){ var uId = data['uId']; /// }); socket.on('user_disconnected', function(data){ var uId = data['uId']; /// }); 任何人都可以给我一个通用的解决scheme,使用定时器删除一个元素,并停止计时器,然后再删除元素?

NodeJS setTimeout / setIntervalcallback作为一个string

据我所知,NodeJS不支持通过setTimeout / setInterval函数中的string传递的callback。 (例如setTimeout(“myfunc()”,100);) 有没有实施或任何其他解决scheme,使这项工作? (例如,而不是调用callback,只是评估它等)。我只是试图加载原始的网页,做了完全一样的事情,所以NodeJS只是抛出exception。

在Node.js中pipe理时间的最佳方式是什么?

哪个是pipe理时间和实时事件的最佳方式? 我正在用Node.js实现一个小型的多人RPG游戏。 我有很多NPC,每3或4秒移动一次,所以我需要更新它们。 解决schemeA:每个NPC使用一个setTimeout 。 如果我有数百个NPC,我会创build定时器。 它更简单,但效率不是很低? 解决schemeB:对所有NPC使用一个setTimeout 。 每次我们通过计算NPC移动之前剩余的最小时间来调用下一次超时。 所以我们必须使用更复杂的代码,但是我们只有一个setTimeout 。 有更好的方法吗?

具有事件定时器的nod​​e.js可伸缩性(setTimeout)

我正在用node.js和socket.io构build一个基于回合的文本游戏。 每一回合都有一个超时时间,然后玩家失去回合并传递给下一个玩家。 我正在使用setTimeout函数,就像我在另一个问题中所说的那样。 问题是,我不知道如何扩展多个实例,也许多个服务器。 AIUI,如果我设置超时,我只能在同一个实例中清除它。 例如,如果一个玩家失去了轮回,例如,超时将被其他玩家轮stream更新,但是这个新玩家将不能访问该定时器对象来清除它,因为它正在第一个玩家的实例上运行。 我看了Redis的pub / subfunction(我将不得不使用它),但是我没有发现任何有关定时事件或延迟发布的内容。 TL; DR,如何保持一个实例/服务器独立的定时器?

setTimeout是否安全,可以在大量时间内安排作业?

我正在编写Node.js中的一个应用程序,这个应用程序需要安排函数在几个小时甚至几天后运行。 目前,我正在做类似这样的事情: const now = Date.now(); const later = getSomeFutureTimestamp(); setTimeout(function() { // do something }, later – now); 我想知道是否setTimeout是这个工作的适当工具,或者如果有一个更适合长时间的工具。 有一件事要注意,我不需要很高的精确度; 如果工作在预定时间的几分钟内运行,一切都应该没问题。

timer._repeat不是一个函数?

节点v4.2.6 我有一个小程序: var chokidar = require('chokidar'); var _ = require('lodash'); var q = require('q'); var fs = require('fs'); var faker = require('faker'); var file = 'testfile.txt'; var pending = ''; var writer; fs.open(file,'w+',function(){ writer = fs.createWriteStream(file); writer.on('error',function(err){ console.log(err); }); writer.on('drain',rewrite); var timer = setInterval(write(),100); }); function write(){ var data = faker.Helpers.createCard(); console.log('attempting to write ' […]

系统时间更改后,Node.js setTimeout不会被触发

我有这样的脚本 setTimeout(function() { console.log("Timeout"); }, 1000 * 60); 当我运行它并将系统时间更改为一小时时,超时不会触发。 如果我改变了一个小时的时间,超时正常工作。 时间被外部程序改变,它使得调用像ioctl( rtcFd, RTC_SET_TIME, &newTime); 如何解决这个问题? 我们在OpenWRT态度调整上使用Node.js v0.10.15 谢谢