我正在使用托管在Jint引擎中的 es6 Promises polyfill 库( es6-promise ),并且在大多数情况下,它运行良好。
为了让它工作,我需要提供一个setTimeout
实现,我的灵感来自how-to-create-timer-on-jint-javascript-side。
然而,这种setTimeout
实现的使用并非完美无缺,因为有时 .NET 计时器会在 Promise 库完成其构建要回调的 Promise 的工作之前触发回调。
我必须解决这个特定问题的一种补救措施是延迟setTimeout
回调的实现及其执行;给图书馆更多的时间来完成它的工作。然而,随着我的 javascript 的复杂性增加,我发现自己增加了延迟,我正在寻找一个可靠的替代方案。
碰巧这个库本身就关心替代品。setTimeout
只有在找不到其他替代方案时才考虑 使用它: process.nextTick()
for node; BrowserMutationObserver
对于 webkit;vertxTimer
(对于Java?);MessageChannel
对于网络工作者。
我的问题是,Jint(Jint 是否可以)公开任何类似于这些概念的东西,允许我在下一次事件循环时执行回调并保持同步,而不是异步调用 .NET 计时器?