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

在纯JavaScript中实现setTimeout()和setInterval(),javascript,Javascript,我有一些支持在浏览器上运行的JavaScript基准代码。但我想在JavaScript引擎的控制台模式(如V8中的“d8”)上运行它以进行测试 我已经为每个DOM变量和函数编写了空变量和函数(例如document.getElementById等)。但我无法完全运行代码,因为浏览器不支持V8引擎,而支持setTimeout()和setInterval()。有没有办法在纯JavaScript代码中实现或模拟这些函数 我非常感谢您的评论。您不能仅使用V8+一些JS来实现这一点,您必须在某种支持计时器的

我有一些支持在浏览器上运行的JavaScript基准代码。但我想在JavaScript引擎的控制台模式(如V8中的“d8”)上运行它以进行测试

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


我非常感谢您的评论。

您不能仅使用V8+一些JS来实现这一点,您必须在某种支持计时器的运行时中增强JS引擎。例如,对于V8,我们来看看它是如何在节点中实现的,您可以看到,
timer\u wrap
绑定是注册的。这个“内部模块”只是一个为js模块提供时间操作的C库。这意味着js定时器的实现是基于“上层”的一些模块,不幸的是,不能按照您的意愿在“纯js”中实现

“和setInterval()由非V8引擎的浏览器支持”,是或不是?是否可能与Node.js重复?节点包括setTimeout和setInterval函数,其工作原理与浏览器中的基本相同。我想在没有浏览器的纯V8引擎中运行一些包含setTimeout()和setInterval()的代码。V8发动机不支持这些。我正在寻找一种用纯JavaScript代码模拟这些函数的方法。@GolezTrol,谢谢你的链接。看来我应该编写另一个C++代码作为V8嵌入器,然后在C++代码中实现StTealTimeJavaScript函数。我仍然希望用纯JavaScript代码编写这些函数,这样我就可以轻松地在“d8”中运行它。但如果我找不到用纯JavaScript代码编写setTimeout的方法,那么这可能是最后的手段。谢谢!实际上,我不必等待一定的时间来运行setTimeout中的代码。所以可以实现setTimeout(),但更困难的部分是模拟setInterval()。谢谢你的链接,但我不能使用node.js。我也很感谢你的评论!我的目的是通过一组JS基准测试来评估JavaScript引擎的性能,如octane、jsbench、enyobench等。我只想关注JS性能,而不考虑DOM访问时间。在我的例子中,用“d8”在控制台模式下运行这些基准测试要简单得多,可以自动分析V8的性能。在JS中实现缺失函数的意义是什么,而不是在(例如)C或C++中类似NoDE.js?”但“更难的部分是模仿SET TIALVAL())=我认为在纯JS中不可能,原因是保持原始的V8源,然后测量每个不同版本的性能。如果我在C++中写这些函数,那么每当我修改V8代码版本时,我就必须添加这些代码。如果那是唯一的解决办法,我必须照你说的去做。我还认为实现setInterval可能是不可能的,但我在这里问是否有一种方法我可以想到。谢谢你的评论!我感谢大家在这里的评论。我可能不得不像你说的那样结束我的问题。在纯JavaScript代码中实现或模拟setTimeout和setInterval函数是不可能的。我可能必须编写C++代码作为V8嵌入,我可以得到一些参考NODE.JS代码,你给我看。谢谢你的评论!