【问题标题】:Is it possible to execute Javascript functions with multi-threads [duplicate]是否可以使用多线程执行 Javascript 函数 [重复]
【发布时间】:2012-07-26 12:15:02
【问题描述】:

可能重复:
JavaScript multithreading

当我在浏览器中打开一个网页时,启动了多少个线程来渲染 DOM 并执行 Javascript 代码?

是否可以使用多线程执行 Javascript 函数?

【问题讨论】:

标签: javascript multithreading


【解决方案1】:

您可以在现代浏览器中使用webworkers

http://www.html5rocks.com/en/tutorials/workers/basics/

【讨论】:

    【解决方案2】:

    简短的回答是否定的,您不能在 javascript 中运行多线程代码。

    更长的答案是你可以模拟它。这个关于 SO 的问题可能会有所帮助:Multithreaded JavaScript how to?

    【讨论】:

    • ...除非您在现代浏览器中使用网络工作者。
    • 我知道,我正在将其添加到我的答案中:)
    【解决方案3】:

    Javascript 代码在单线程中运行。 您不能启动单独的线程,但您仍然可以使用异步函数来实现,例如 setTimeOut 和 setInterval 。

    【讨论】:

      【解决方案4】:

      一般只有一个 UI 线程,但你可以在 HTML5 中与 WebWorkers 并行运行 JS。

      【讨论】:

        【解决方案5】:

        您可以将 WebWorkers 用于线程,但它不能用于 dom。你也可以尝试通过setInterval模拟它

        【讨论】:

        • 调用webworker的脚本可以使用DOM!!!
        【解决方案6】:

        人们有时使用的另一个想法是使用 iframe。如果您的应用程序可以建模为一组 iframe(如 facebook),您可以利用它。谷歌浏览器对此进行了高度优化。每帧中的 Javascript 在单独的执行上下文中执行,因此可以并行化。

        【讨论】:

        • 其他浏览器呢,比如 IE、firefox、safari?你提供 iframe 的优化吗?
        • 是的.. 每个浏览器在每个 iframe 中在单独的执行上下文中运行 javascript,因此是并行的。这是一种非常流行的技术。缺点是浏览器必须发出多个 HTTP 请求,每帧 x。通过 iframe 提供的更多优化:aaronpeters.nl/blog/iframe-loading-techniques-performance
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        相关资源
        最近更新 更多