IE8上的javascript多线程WebWorkers

IE8上的javascript多线程WebWorkers,javascript,html,Javascript,Html,HTML5网络工作者看起来很有前途,但目前他们还没有得到IE8的支持。我正在构建一个商业Saas,我必须至少再支持该浏览器2年 如果我开始实现一个web worker线程并在IE8上运行它,会发生什么?它是在单个线程上运行还是根本不工作 谢谢。您将得到一个错误,因为IE中根本不存在用于创建Web Worker的API e、 g 将引发错误,因为工作进程未定义 如果要执行功能检测,可以在创建辅助对象之前先检查: if(window.Worker !== undefined){ var wor

HTML5网络工作者看起来很有前途,但目前他们还没有得到IE8的支持。我正在构建一个商业Saas,我必须至少再支持该浏览器2年

如果我开始实现一个web worker线程并在IE8上运行它,会发生什么?它是在单个线程上运行还是根本不工作


谢谢。

您将得到一个错误,因为IE中根本不存在用于创建Web Worker的API

e、 g

将引发错误,因为工作进程未定义

如果要执行功能检测,可以在创建辅助对象之前先检查:

if(window.Worker !== undefined){
   var worker = new Worker('my_task.js'); 
}
当然,您委托给webworker的任何任务都不会发生在不受支持的浏览器上,这意味着您需要在主要的非worker上下文上运行逻辑


由于您向WebWorkers发布消息并侦听来自WebWorkers的事件/消息,如果您对worker任务采用相同的方法,那么您可以在主上下文中运行它,并以与webworker相同的方式调用它。这将需要您进行一些额外的腿部工作,但通过这种方式,当您检测到浏览器支持WebWorkers时,您可以轻松地切换到WebWorkers。

有一个项目为IE<10提供虚拟web workers实现: API与相同,但执行是单线程的

它工作得很好,但是我发现了一个关于这个库的问题。工作程序的代码将在

var worker = new Worker('myworker.js');
被称为。现在没有

worker.onmessage = function {...}
已设置,无法将消息从工作程序发送到主代码。因此,可能需要在主代码向工作程序发送消息之前启动工作程序代码,例如

worker.postMessage('start');

你试过了吗?发生了什么事?没有试过,还没有到那个阶段;只是想看看如果我这样做会发生什么。你试过了吗?制作一个演示需要40秒!或在线测试其中一个演示:好的,谢谢你的回答;我将远离网络工作者,直到IE8死掉。谢谢。@frenchie你不必完全远离他们,你只要聪明地解决你的问题就行了。为WebWorker类构建与作为worker使用相同的API。以同样的方式调用它,等等。这样,如果你检测到浏览器支持,你仍然可以使用itAlso,IE9也不支持WebWorkers,因此如果你要等待,你将不得不等待很长时间。谢谢;我正在构建一个HTML5应用程序。javascript代码库大约有9000行,我只创建一个实现;至少有一段时间。如果工作进程非常密集,它会像当前一样停止页面的执行。例如,在10000个对象数组中循环
worker.postMessage('start');