gpt4 book ai didi

javascript - 在网络 worker 中访问 Angular $Scope

转载 作者:行者123 更新时间:2023-11-28 07:43:35 25 4
gpt4 key购买 nike

在 Web Workers 中访问 Angular $scope 数据的常见做法是什么?

我正在尝试将其与parallel.js 库结合起来。

$scope.variant = 7;
$scope.final = 0;
var p = new Parallel([0, 1, 2, 3, 4, 5, 6]),
log = function () { console.log(arguments); };

function fun(n) {
$scope.final += n * $scope.variant;
};

p.map(fun).then(log)

我收到以下错误:

 Uncaught ReferenceError: $scope is not defined

最佳答案

Web Workers 会生成一个新线程,从而生成 Angular 应用程序的新实例,因此代码永远不会连接到您的主应用程序,除非您找到与其通信的外部方式(sessionStorage、localStorage、cookie、API 调用、 ETC。)。但你需要以某种方式传递你想要的 $scope。

但一般来说,我认为让两个线程在同一个 $scope 上工作并不是一个好主意(即使您设法做到这一点)。 Web Workers 通常用于一些独立于主应用程序的繁重任务,其结果是您将其传递回主应用程序以供进一步使用(考虑渲染一个 super 复杂的图像,然后将其传递回主应用程序,以便您可以将其用作背景或其他东西)。

<小时/>

更新

这里是可能是最简单方法的简短示例。您不会在工作脚本中使用 Angular,而是尽可能简单地循环这些文件:

Controller

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

worker.addEventListener('message', function(e) {
console.log('Worker said: ', e.data);
$scope.final = e.data; // for example
$scope.$apply(); // launch a digest cycle
}, false);

工作脚本

function iterate() {
// iteration and data collection stuff here
// send the needed data afterwards:
self.postMessage(collectedData);
}

您还可以向worker发送参数,并使用参数调用迭代函数等。

我从 http://www.html5rocks.com/en/tutorials/workers/basics/ 中获取了示例作为快速向您展示操作方法的指南。让工作人员做繁重的工作,只将您需要的数据传回应用程序。

关于javascript - 在网络 worker 中访问 Angular $Scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27718168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com