HTML5 WebWorker看起来非常有前途,但是目前IE8不支持它们。我正在建立企业Saas,并且必须至少再支持此浏览器2年。

如果我开始实施Web Worker线程并在IE8上运行它,将会发生什么?它会只在单个线程上运行还是根本不起作用?

谢谢。

最佳答案

您会收到错误消息,因为IE中根本不存在用于创建Web Worker的API。

例如

var worker = new Worker('my_task.js');


由于未定义Worker,将引发错误。

如果要进行特征检测,则可以在创建工作线程之前先进行检查:

if(window.Worker !== undefined){
   var worker = new Worker('my_task.js');
}


当然,您委托给Webworker的任何任务都不会在不受支持的浏览器上发生,这意味着您需要在主要(非工作人员)上下文中运行逻辑。

由于您将消息发布到WebWorkers(并从其中监听事件/消息),因此,如果您对工人任务采用相同的方法,则可以仅在主要上下文中运行它,并以与调用它相同的方式对其进行调用是一个网络工作者。这将需要额外的繁琐工作,但是通过这种方式,当您发现浏览器支持WebWorkers时,可以轻松切换到WebWorkers。

关于javascript - IE8上的javascript多线程WebWorkers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10504228/

10-11 05:11