【问题标题】:Is there a way to fast forward time in the browser to trigger setTimeouts set on the page?有没有办法让浏览器中的时间快进来触发页面上设置的 setTimeouts?
【发布时间】:2020-10-06 15:09:43
【问题描述】:

我有一个非常烦人的网站,我必须使用它使用 setTimeouts 来强制用户等待 15 秒再继续,如果能够调用 window.fastForward(15000) 之类的东西来移动它,那就太好了。

在编写依赖于时间的测试时,有一些人为的方法可以加快时间,因此我们实际上不必等待 30 秒来运行测试。任何浏览器中都存在类似的东西吗?

【问题讨论】:

  • 出于测试目的,您可以修改 setTimeout..
  • 你可以在某处设置一个常量,如果在开发模式下设置为 100 毫秒,如果不是,则设置为 15000 毫秒?

标签: javascript google-chrome firefox


【解决方案1】:

出于测试目的,您可以修改默认的 setTimeout,下面是一个简单的示例,它可以让 setTimeout 快 10 倍。

ps。为了让这段代码更便携,我没有使用 window,而是使用了 globalThis,这允许它在 nodejs 等中工作。对于旧浏览器,你可以只用 window 替换,或者最好还是使用 polyfill。

//lets make our timeout's 10 times faster..

const origTimeout = globalThis.setTimeout;
globalThis.setTimeout = function (fn, delay) {
  origTimeout.call(this, fn, delay / 10);
}


console.time('done in');
setTimeout(() => {
  console.log('Will be done in 10 seconds');
  console.timeEnd('done in');
}, 10000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2010-10-17
    • 2017-06-08
    相关资源
    最近更新 更多