在纯JavaScript中实现setTimeout()和setInterval()

时间:2016-03-06 08:30:49

标签: javascript

我有一些支持在浏览器上运行的JavaScript基准代码。但是我想在V8的'd8'之类的JavaScript引擎的控制台模式下运行它以进行测试。

我为每个DOM变量和函数编写了空变量和函数(例如document.getElementById等)。但我无法完全运行代码,因为浏览器不支持setTimeout()setInterval(),而是来自V8引擎。有没有办法在纯JavaScript代码中实现或简单地模拟这些函数?

我感谢任何评论。

2 个答案:

答案 0 :(得分:3)

你不能只用V8 +一些JS,你必须在某种支持定时器的运行时中嵌入JS引擎。对于V8,例如zombie.js

答案 1 :(得分:2)

让我们来看看它是如何在节点timers.js.中实现的。您可以在line #24看到timer_wrap绑定已注册。这个“内部模块”只是一个 C 库,为 js 模块提供时间操作。这意味着 js 计时器实现基于“上层”的某些模块,遗憾的是无法在“pure js”中实现。