是否有任何JavaScript事件可以告诉我们主线程何时空闲?

是否有任何JavaScript事件可以告诉我们主线程何时空闲?,javascript,Javascript,基本上,我希望在主线程完成解析、求值并变得足够自由以接受用户输入时执行上述函数。 是否存在捕获交互事件的javascript事件或其他方法 用例:我有一个网站,其中包含多个外部javascript文件,如gtm.js、google analytics、一些跟踪js文件、gpt.js等。我的网站的js加载事件在最长2秒内被调用,但由于执行了上述所有脚本,页面在8-10秒后变得交互式。因此,我分析了造成这种延迟的原因,并确定出现在页面第一页的谷歌广告需要1-3秒(加载此广告需要时间) 我想的是,如果

基本上,我希望在主线程完成解析、求值并变得足够自由以接受用户输入时执行上述函数。 是否存在捕获交互事件的javascript事件或其他方法

用例:我有一个网站,其中包含多个外部javascript文件,如gtm.js、google analytics、一些跟踪js文件、gpt.js等。我的网站的js加载事件在最长2秒内被调用,但由于执行了上述所有脚本,页面在8-10秒后变得交互式。因此,我分析了造成这种延迟的原因,并确定出现在页面第一页的谷歌广告需要1-3秒(加载此广告需要时间)

我想的是,如果我在互动活动后几秒钟加载谷歌广告,也许我可以在互动时间内节省1-3秒(这是因为谷歌广告而花费我的时间)


我期待着灯塔性能的提高,因为我的互动时间可能会更少。这只是我的假设。如果我错了,请纠正我

您可以使用
DOMContentLoaded

当初始HTML文档已加载时,将激发DOMContentLoaded事件 已完全加载和分析,无需等待样式表, 完成加载的图像和子帧


似乎您正在寻找。加载初始页面(html、css、脚本)会阻止交互性。只要监听load或domcontentloaded事件就足以知道页面是否是交互式的。当您计划要执行的函数并执行时,线程处于空闲状态。您真正想解决的问题是什么?您可以查看此链接,希望它能有所帮助:>这是一个这样的情况-,您想执行X(我们不知道是什么,因为您没有提到实际问题),但不知道如何执行,但您认为您可以通过执行Y(“当“主线程”空闲时如何执行函数”)来解决实际问题,但你也不能这样做,所以你会在堆栈溢出时问“如何做Y?”。当然,Y本身就是一个需要解决的奇怪问题。你可以描述一下你正在尝试做什么,似乎需要在“主线程”空闲时调用函数?
document.addEventListener("pageBecomesInteractive", function()
{
   alert("page is interactive");
};
function doSomething() {
  console.info('DOM loaded');
}

if (document.readyState === 'loading') {  // Loading hasn't finished yet
  document.addEventListener('DOMContentLoaded', doSomething);
} else {  // `DOMContentLoaded` has already fired
  doSomething();
}