设置大超时

主要观点:JavaScript 的 setTimeout 在约 25 天后会出现问题,作者创建了 setBigTimeout 模块来解决此问题,可设置很大的延迟时间,通过将多个较短超时时间链接在一起实现,能接受 bigint 类型的延迟时间,安装或查看源代码可尝试使用该模块。
关键信息:

  • setTimeout 是延迟代码执行的方式,以毫秒为单位提供超时时间和要调用的函数。
  • 大多数 JavaScript 运行时中,超时时间用 32 位有符号整数表示,最大约 24.9 天,超过则会出现奇怪现象,如设置 40 天的超时时间函数会立即执行。
  • setBigTimeout 工作方式类似 setTimeout,可接受很大延迟,不能将字符串作为第一个参数,通过链接多个较短超时时间实现,作者写了模拟时钟的自动化测试但未等待 84 年验证其有效性。
    重要细节:
  • 示例代码展示了 setTimeoutsetBigTimeout 的使用方法,如 setTimeout(() => { console.log("This runs after 2 seconds"); }, 2000);setBigTimeout(() => { console.log("It's been 84 years..."); }, EIGHTY_FOUR_YEARS_IN_MILLISECONDS); 等。
  • 提到 setTimeout 函数实际上是在指定时间后排队,并非总是在精确指定时间运行,可参考 "What the heck is the event loop anyway?" 了解更多。
  • setBigTimeout 不允许将字符串作为第一个参数,除此外与 setTimeout 工作方式相同。
阅读 14
0 条评论