setInterval()在浏览器和Node之间是不同的

时间:2019-06-18 10:15:04

标签: javascript node.js typescript browser timer

浏览器(窗口)和NodeJS(全局)之间的全局方法setIntervalsetTimeout不同。行为是完全相同的。两者都一样。

请参阅有关NodeJSBrowser的文档。在Node中,返回的值是Timeout类的实例。浏览器的方法仅返回一个数字,一个处理程序ID。

如果您是为浏览器开发但使用Node进行测试,则如何处理这种差异,因为测试框架引擎是node(例如Jest)。我需要切换到浏览器测试引擎吗?

(btw)另外,就我而言,我限制所有全局变量。因此,我只能通过作用域名称访问。例如window.setIntervalglobal.setInterval而不只是setInterval。 (这是tslint规则no-restricted-globals

无论如何,Node的计时器功能和浏览器的计时器功能之间存在类型冲突。 有良好的处理方法吗?我需要切换测试引擎吗?但最后他们也做同样的事情。也许我必须强制转换为任何类型?

我知道这不是JavaScript规范。这是环境依赖性。我并不是说它们应该完全相同。我只是想知道当我在node-js上运行单元测试时如何处理它,但是我正在为浏览器开发。当前,只有返回值不同。行为本身似乎是平等的。

0 个答案:

没有答案