gpt4 book ai didi

javascript - 网络 worker 究竟是什么以及何时使用它们

转载 作者:行者123 更新时间:2023-11-29 21:34:05 24 4
gpt4 key购买 nike

我在 SO 上阅读了一些关于 XMLHttpRequest ( Is there any reason to use a synchronous XMLHttpRequest? ) 的内容,我在 2010 年的一个线程中读到,随着 HTML5 中“线程”的引入,开发人员可能会开始使用同步 API。在谷歌上稍微搜索了一下,我找到了关于网络 worker 的 MDN 页面。

我从现在开始编写 Javascript 和 Node 大约一年了(假设是初学者),但我仍然会遇到使用这些网络 worker 的东西。也许我需要阅读更多代码。

现在我的问题是,尽管它们看起来非常有用,但为什么在野外很少见?另外,使用它们时的一般用例和指南是什么?是否有可能在 Nodejs 环境中获得多线程处理的好处?如果是这样,为什么所有 Nodejs API 仍然是异步的?

谢谢。

最佳答案

网络 worker 严格来说是客户端的东西,所以它与 Node.js 无关(编辑:实际上,请参阅 this module)。

您可能听说过 JavaScript 是严格的单线程的:如果一个函数正在执行一些繁重的计算,则不会执行任何其他操作,包括动画图标、重新绘制窗口,什么都不会。因此,客户端 JS 应始终避免繁重的计算、大循环和任何其他可能占用线程超过几分之一秒的事情。

Web-workers 是解决这个问题的方法。每个web-worker都在自己的线程中运行,想阻塞多少就阻塞多少——不会影响网页的正常运行。权衡是它不能访问 DOM:它不影响渲染的事实意味着你不能影响它的渲染。 :) 如果 web-worker 想要渲染某些东西,它必须向主线程发送一条消息来完成它。

在实现方面,每个 web-worker 都需要在一个单独的 JS 文件中。你看不到更多它们的原因可能是双重的:普通人可能不知道如何使用它们,只有当你需要认真计算并且不希望它阻塞你的主线程时才需要它们 -这在一开始并不常见,当它出现时,计算通常被卸载到服务器(在客户端)或分离到进程(在 Node.js 中)。

阅读更多关于 HTML5 Rocks 的信息.

关于javascript - 网络 worker 究竟是什么以及何时使用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35307539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com