所以我开始听到更多有关 网络的工人.我认为这是绝对奇妙的,但问题我还没有看到任何真正解决迄今为止是如何支持老年浏览器,还没有支持新的技术。

唯一的解决办法,我已经能够拿出这么远,是使某一类包装的网络工作者的功能,将回落到一些疯狂的计时器基础的解决方案,将模拟的多线程的执行。

但是,即使在这种情况下,如何检测是否网络工作者是一个受支持的功能浏览目前正在执行的javascript?

谢谢!

有帮助吗?

解决方案

这是网络发展的老问题:办不支持你所需要的浏览器是什么。目前,我只提倡使用Web工人复杂,长时间运行的任务,可以被打破了,由于某种原因,不能做服务器端。这样一来,如果你没有网络工作者呢,你只需等待更长的时间。否则,你就必须让你的代码的混乱与包装和诸如此类的东西,你会尽量避免以后。我的降解战略一旦页面加载发生。

的onload函数的伪代码:

if( window.Worker /*check for support*/ )
    someObject.myFunction = function() { /*algorithm that uses Web Workers*/ }
else
    someObject.myFunction = function() { /* sad face */ }

您仍然需要编写算法的两倍,但你必须这样做,无论如何,如果你想支持的浏览器没有网络的工人。所以这带来了一个有趣的问题:是不是值得花时间(和金钱)写东西了两次,只是这样可以快一点对某些人

其他提示

在此咀嚼几天后,我结束了写我的博客上的一篇文章:点击 http://codecube.net/2009/07/cross-platform-javascript -webworker /

的想法是,在不限定WebWorker情况下,有一个包装API只是使用内置的技术。虽然本文中的示例是非常简单的,它在所有的浏览器不工作: - )

在贝斯平项目(什么他们叫)a 正面 允许他们运行的JavaScript code在网络工作者、齿轮工人及如果这些都不是可以在主要线。

下面就是约翰Resig的说回答在他的博客评论

  

我想这一点 - 但它会非常棘手。你必须让你的处理代码使用的setTimeout / setInterval的从一开始(该代码最终会在这两个工人和一个正常的网站工作)。因此,尽管结果会稍微慢一点对于启用工人的浏览器,至少它会在两种情况下工作。

我有搞笑的问题,我没有网络支持工作者的任务是在Firefox(无响应脚本)太慢,但在所有其他现代浏览器速度不够快。 随着Web工作者来说,它工作在所有浏览器,除了歌剧(10.50),这完全不支持Web工人,但歌剧没有他们工作得很好。

于是,我写了使用Web工人API可用时或有一些小增加的实际工作者JS假货的API一个WorkerFacade。你可以找到 WorkerFacade作为在GitHub上一个要点。工作很适合我,可以帮助别人了。

可以使用Modernizr的( http://modernizr.com/download/#-webworkers )来检测浏览器是否支持webworkers,此时你就必须有两个版本...你可以看到在的 http://caniuse.com/webworkers

if(Modernizr.webworkers) 
{} 
else
{}

@ geowa4

//globals
var useWorer={}
   ,noWorkerClosure=function(){...}
   ,myWorkerClosure=function(){...}
   ;
function init(){
         if(!!window.Worker){
           noWorkerClosure=null;
           useWorer=new myWorkerClosure();
         }
         else{
           useWorer=new noWorkerClosure();
           myWorkerClosure=null;
         }
}

这样你释放一些内存的onload,你不需要每次都要求支持。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top