首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript中Web中同步库的使用

JavaScript中Web中同步库的使用
EN

Stack Overflow用户
提问于 2016-03-14 14:22:13
回答 2查看 439关注 0票数 1

我正试图用javascript创建我的第一个网络工作者。我得到了一个名为“预测器”的对象,它具有使用prototype的方法和属性,如下所示:

代码语言:javascript
复制
function Predictor(historical, type) {
    this.historical = historical;
    this.type = type;
    this.NN = this.generateNN(this.historical);
}

Predictor.prototype.getMaxTime = function (historical) {
    return historical.length;
};

我使用的是synapic.js库,你可以创建神经元网络(NN)。有时训练一个NN,这是一个昂贵的进步和网页浏览器冻结,而脚本正在完成培训。

为了避免这个问题,我阅读了关于网络工作者的文章。我尝试使用对象postMessage Predictor并在工作器中执行predictor.train(),但是浏览器说Predictor不是TransferableClonable对象。由于我把消息转换成JSON,所以我不能像在其他语言中那样传递对象,序列化类。

我尝试的第二种方法是在web worker中创建预测器,并将其保存在worker中。我使用importScripts('../../lib/synaptic/synaptic.js')importScripts('../model/predictor.js')方法来使用库和我创建的类,但是浏览器说:

代码语言:javascript
复制
Uncaught ReferenceError: synaptic is not defined

我可以在函数Predictor中以param的形式发送对象postMessage吗?修复它的最好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-14 16:32:00

为什么传递Predictor over消息不起作用

问题是,仅仅通过Predictor是不够的,即使您成功地做到了这一点。不要忘记,当使用预测器时,整个库必须存在!

当您将对象传递给web工作者时,只发送它们自己的属性,而不发送来自原型的属性。因此,例如,Predictor.prototype.getMaxTime不会通过。

为什么你会得到synaptic is not defined错误(剧透:不是你的错)

我的许多问题以及其他问题都是由同一个开发人员的错误引起的:他们使用而不是 self.

在worker中,self包含全局范围以及工作方法(例如。postMessage)。在浏览器中,self == window

因此,要解决您的问题,请将同步源中的window self 替换为self

在他们的GitHub回购:https://github.com/cazala/synaptic/search?utf8=%E2%9C%93&q=window中的搜索查询

修正错误而不改变同步

我不能百分之百地肯定这一点,但这可能会奏效。但它也可能会混淆那些意识到工作人员是如何工作的图书馆:

代码语言:javascript
复制
// Make global variable window that refers to global scope
self.window = self;
// Yes you can pass multiple paths at once
importScripts('../../lib/synaptic/synaptic.js', '../model/predictor.js');
// Should work. Next time make a test case so I don't have to shoot blindfolded
 ...
票数 0
EN

Stack Overflow用户

发布于 2016-03-28 14:52:25

在突触文档中,我发现了一个叫做workerTrainer的方法,这个方法在网络工作者中训练神经网络。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35990069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档