浏览器(窗口)和NodeJS(全局)之间的全局方法setInterval
和setTimeout
不同。行为是完全相同的。两者都一样。
请参阅有关NodeJS和Browser的文档。在Node中,返回的值是Timeout类的实例。浏览器的方法仅返回一个数字,一个处理程序ID。
如果您是为浏览器开发但使用Node进行测试,则如何处理这种差异,因为测试框架引擎是node(例如Jest)。我需要切换到浏览器测试引擎吗?
(btw)另外,就我而言,我限制所有全局变量。因此,我只能通过作用域名称访问。例如window.setInterval
或global.setInterval
而不只是setInterval
。 (这是tslint规则no-restricted-globals
)
无论如何,Node的计时器功能和浏览器的计时器功能之间存在类型冲突。 有良好的处理方法吗?我需要切换测试引擎吗?但最后他们也做同样的事情。也许我必须强制转换为任何类型?
我知道这不是JavaScript规范。这是环境依赖性。我并不是说它们应该完全相同。我只是想知道当我在node-js上运行单元测试时如何处理它,但是我正在为浏览器开发。当前,只有返回值不同。行为本身似乎是平等的。