什么是networking工作者,什么时候使用它们

我正在阅读关于XMLHttpRequest( 有没有任何理由使用同步XMLHttpRequest? ),在这里我从2010年的一个线程读取,在HTML5中引入“线程”,开发人员可能会开始使用同步API。 在google上search一下,我发现了networking工作者的MDN页面。

我从现在开始编写Javascript和Node(假设是初学者),而且我仍然会遇到一些利用这些web工作者的东西。 也许我需要阅读更多的代码。

现在我的问题是,即使它们看起来很有用,为什么在野外看不到呢? 另外,使用它们的一般用例和指南是什么? 是否有可能在Nodejs环境中获得multithreading处理的好处? 如果是这样,为什么所有的Nodejs API仍然是asynchronous的?

谢谢。

一个networking工作者是一个客户端的东西,所以它没有任何关系Node.js(编辑:实际上,看到这个模块 )。

你可能听说过JavaScript是严格单线程的:如果一个函数做了一些繁重的计算,那么没有其他的工作要做,包括animation图标,重新绘制窗口,什么都不做。 因此,客户端的JS应该总是避免繁重的计算,大循环和其他可能篡改线程超过几分之一秒的东西。

networking工作者是解决scheme。 每个networking工作者都在自己的线程中运行,并且可以尽可能多地阻塞 – 这不会影响网页的正常运行。 权衡是它不能访问DOM:事实上它不影响渲染意味着你不能影响渲染。 :)如果一个networking工作者想要渲染一些东西,就必须发送一条消息给主线程去做。

实施方面,每个networking工作者需要在一个单独的JS文件。 你没有看到更多的原因可能是双重的:一般的Joe可能不知道如何使用它们,只有当你需要认真的计算,而不希望它阻止你的主线程时,这在一开始并不常见,当它是时,计算通常被卸载到服务器(在客户端)或分离进程(在Node.js中)。

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