究竟什么是网络工作者以及何时使用它们
What exactly are web workers and when to use them
我正在SO上阅读有关XMLHttpRequest的内容(有什么理由使用同步XMLHttpRequest吗?(,我在2010年的一个线程上读到,随着HTML5中"线程"的引入,开发人员可能会开始使用同步API。在谷歌上搜索了一下,我在网络工作者上找到了MDN页面。
我从大约一年开始编写Javascript和Node(假设是初学者(,我仍然会遇到使用这些Web工作者的东西。也许我需要阅读更多代码。
现在我的问题是,尽管它们似乎非常有用,但为什么在野外看不到多少?另外,使用它们时的一般用例和指南是什么?是否有可能在 Nodejs 环境中获得多线程处理优势?如果是这样,为什么所有的 Nodejs API 仍然是异步的?
谢谢。
Web Worker严格来说是一个客户端的东西,所以它与Node无关.js(编辑:实际上,请参阅此模块(。
你可能听说过 JavaScript 是严格的单线程:如果一个函数正在做一些繁重的计算,那么其他任何事情都不会完成,包括动画图标、重新绘制窗口,什么都没有。因此,客户端JS应始终避免繁重的计算,大循环以及任何其他可能篡夺线程超过几分之一秒的东西。
网络工作者是解决方案。每个 Web worker 都在自己的线程中运行,它可以随心所欲地阻止 - 它不会影响网页的正常运行。代价是它无法访问 DOM:它不影响渲染的事实意味着您无法影响使用它的渲染。:)如果一个 Web worker 想要渲染一些东西,它必须向主线程发送一条消息来做到这一点。
在实现方面,每个 Web worker 都需要在单独的 JS 文件中。你没有看到更多它们的原因可能是双重的:普通的 Joe 可能不知道如何使用它们,并且只有在你需要认真计算并且不希望它阻塞你的主线程时才需要它们 - 这首先并不常见,当它是时,计算通常会卸载到服务器(在客户端(或单独的进程(在 Node.js 中(。
阅读更多关于HTML5 Rocks的信息。
- 什么's的作用;隔离“;在V8中?以及如何可能使“;隔离“;孤立地
- 需要使用什么以及何时使用browserfy
- 什么是“;这个“;在函数括号中使用时执行
- 使悬停菜单适用于移动设备的最佳实践方法是什么?
- 什么'是使输入上禁用的属性与Meteor辅助对象反应的最佳方法
- 有什么方法可以使页面无法刷新吗
- 在表单提交将DOM的一部分替换为分部之后,我应该将ajax成功绑定到什么来使我的javascript工作
- JSXGraph 中有什么方法可以使图像不透明
- 如何使javascript提示框取消按钮什么都不做
- 我不确定我缺少什么才能使此应用程序在Websockets上在Google Cloud上正常工作
- 在浏览器返回时使window.history.state null的可能情况是什么
- 与 API 一起使用时,将 Date 对象存储在数据库中的最佳实践是什么
- 我需要在FancyBox文件中替换什么才能使其出现在父级中
- 是什么使浏览器自动填充电子邮件/密码输入
- 我应该在此代码中添加什么以使弹出窗口在 10 秒后出现
- 究竟什么是网络工作者以及何时使用它们
- 在 jsTree 中,使节点文本可单击的最佳方法是什么(用于选中复选框)
- 如何使选项始终显示,无论输入值是什么
- 何时在angularjs中使用工人和工厂功能
- Grunt、Gulp.js和Bower之间有什么区别?为什么&何时使用