一般来说,浏览器中的 JavaScript 执行被认为是单线程的。这个单线程是否适用于浏览器窗口中打开的所有选项卡?
换句话说,如果(不同的)JavaScript 代码在不同的选项卡中运行,它们都使用单个线程执行吗?
此外,当您打开同一个浏览器的多个窗口并且每个窗口包含多个选项卡时会发生什么?
最后,上述答案是否取决于浏览器供应商/版本等?
一般来说,浏览器中的 JavaScript 执行被认为是单线程的。这个单线程是否适用于浏览器窗口中打开的所有选项卡?
换句话说,如果(不同的)JavaScript 代码在不同的选项卡中运行,它们都使用单个线程执行吗?
此外,当您打开同一个浏览器的多个窗口并且每个窗口包含多个选项卡时会发生什么?
最后,上述答案是否取决于浏览器供应商/版本等?
没有办法以通用的方式回答这个问题,因为这是特定于浏览器实现的。
几乎每个较旧的浏览器总是为每个选项卡使用一个线程,但更现代的浏览器/版本可能已经改变了这一点(例如,chrome每个选项卡都有一个线程 - 实际上,它甚至每个选项卡都有一个完整的进程)。编辑:从评论更正
实际上 chrome 使用 Process-per-site-instance。这意味着在多个选项卡中打开的单个站点仍将由同一进程呈现
如果您出于性能原因询问它(有点像询问“可以使用永恒的无限循环阻止我网站中的所有内容,否则会传播到其他选项卡”),假设线程由共享线程更安全每个人。如果它在当前浏览器中,那么您已经计划好了,如果不是,那么您将获得比计划更好的性能,这几乎不是问题。
为了让一些代码在自己的线程中运行,在Web Workers有一个循环,但它们还远未在每个“现代”浏览器中完全实现。