【问题标题】:ng-webworker - IE 11 errorsng-webworker - IE 11 错误
【发布时间】:2017-04-27 18:49:43
【问题描述】:

所以我正在使用一个名为 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 中运行时,错误功能被命中,这仍然很有希望,但是,错误有效负载中没有给出数据,即有问题的,因为我完全不知道是什么导致网络工作者在该特定浏览器上失败。

【问题讨论】:

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


    【解决方案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 }]); 此代码假设您安装了带有 bower 的 ngWebworker。您可能仍需要调整路径,具体取决于您所在的路径。

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

    详情

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2013-12-11
      • 2018-01-02
      • 2023-03-12
      • 2018-11-08
      • 1970-01-01
      相关资源
      最近更新 更多