ng-webworker - IE 11错误

时间:2016-05-12 16:06:02

标签: javascript angularjs internet-explorer-11 web-worker

所以我正在使用一个名为ng-webworker的库,并尝试运行一个非常简单的长时间运行任务。

$scope.onParallelDownload = function() {
   function doubler(num) {
       return num * 2;
                         }

   var myWorker = webWorker.create(doubler);
   myWorker.run(3).then(function(result) {
         alert("Answer: " + result);

   }, function(error) {
       var err = error;
   });
}

这在Chrome中完美运行并显示警报,但是当我在Internet Explorer 11中运行时,我正在调试它,错误函数被命中,这仍然很有希望,但是,错误有效负载中没有给出数据,有问题,因为我完全不知道是什么导致Web工作者在该特定浏览器上失败。

1 个答案:

答案 0 :(得分:1)

您很可能没有设置文件worker_wrapper.min.js(或worker_wrapper.js)的路径。 IE需要此文件(见下文)。将您的应用配置调整为以下内容: angular.module('myApp', [ // your dependencies 'ngWebworker' ]) .config(['WebworkerProvider', function (WebworkerProvider) { WebworkerProvider.setHelperPath("./bower_components/ng-webworker/src/worker_wrapper.min.js"); // adjust path }]); 此代码假定您已安装ngWebworker与bower。您可能仍需要调整路径,具体取决于您所在的路径。

如果您已经设置了辅助路径,但它仍然无效,请检查开发人员工具中是否正在加载帮助文件(您可能设置了错误的路径并获得了404)。

详细信息

将函数传递给Webworker时,它会将此函数转换为blob,然后由web worker执行,就像它是一个独立的文件一样。但是,Internet Explorer将这些blob视为跨域,因此这不起作用。 ngWebworker使用的解决方法是运行独立的JavaScript文件(我们在上面设置的worker_wrapper.min.js)。然后,Web worker运行该文件,ngWebworker将您的字符串化函数传递给评估它的worker。

请注意,如果您不在IE上,则不会使用此文件。