HTML5 WebWorkers 看起来很有前途,但目前 IE8 不支持它们。我正在构建一个商业 Saas,我必须再支持这个浏览器至少 2 年。
如果我开始实现 Web 工作线程并在 IE8 上运行它会发生什么?它只是在单个线程上运行还是根本不起作用?
谢谢。
最佳答案
您会收到错误消息,因为 IE 中根本不存在用于创建 Web Worker 的 API。
例如
var worker = new Worker('my_task.js');
会抛出错误,因为 Worker 未定义。
如果要做特征检测,可以在创建worker之前先检查一下:
if(window.Worker !== undefined){
var worker = new Worker('my_task.js');
}
当然,您委托(delegate)给网络工作人员的任何任务都不会在不受支持的浏览器上发生,这意味着您需要在主(非工作人员)上下文上运行逻辑。
由于您将消息发布到 WebWorkers(并监听来自 WebWorkers 的事件/消息),因此如果您对工作线程任务遵循相同的方法,您可以在主要上下文中运行它,并以与您相同的方式调用它如果是网络 worker 的话会的。这将需要您进行一些额外的跑腿工作,但这样当您检测到浏览器支持 WebWorkers 时,您可以轻松切换到 WebWorkers。
关于IE8 上的 javascript 多线程 WebWorkers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10504228/