Questions tagged «web-worker»

带有这个标签的问题应该与“ Web Workers”技术有关。工作者为Web内容提供了一种在后台线程中运行脚本的简单方法。创建后,工作人员可以通过将消息发布到创建者指定的事件处理程序中来将消息发送到生成任务。

25
没有单独的Javascript文件的网络工作者?
据我所知,网络工作者需要用一个单独的JavaScript文件编写,并按如下方式调用: new Worker('longrunning.js') 我正在使用闭包编译器来合并和最小化我的所有JavaScript源代码,而我不必将我的工作人员放在单独的文件中进行分发。有什么办法可以做到这一点? new Worker(function() { //Long-running work here }); 鉴于一流的功能对于JavaScript至关重要,为什么进行后台工作的标准方法必须从Web服务器加载整个其他JavaScript文件?

5
Node.js和CPU密集型请求
我已经开始尝试使用Node.js HTTP服务器,并且真的很想编写服务器端Javascript,但是有些事情使我无法开始在Web应用程序中使用Node.js。 我了解整个异步I / O概念,但我对程序代码占用大量CPU资源的极端情况(如图像处理或对大型数据集进行排序)感到有些担忧。 据我了解,对于简单的网页请求,例如查看用户列表或查看博客帖子,服务器将非常快。但是,如果我想编写非常占用CPU的代码(例如在管理后端),以生成图形或调整成千上万张图像的大小,则请求将非常缓慢(几秒钟)。由于此代码不是异步的,因此在那几秒钟内到达服务器的每个请求都将被阻止,直到我的慢请求完成为止。 一种建议是使用Web Workers执行CPU密集型任务。但是,恐怕网络工作者会很难编写干净的代码,因为它可以通过包含一个单独的JS文件来工作。如果CPU密集型代码位于对象的方法中怎么办?为每个CPU密集型方法编写JS文件实在是太糟了。 另一个建议是产生一个子进程,但这会使代码的可维护性降低。 有什么建议可以克服这个(公认的)障碍?在确保CPU重任务异步执行的同时,如何使用Node.js编写干净的面向对象的代码?

3
Web Worker的用例是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 改善这个问题 我正在寻找使用Web Workers API的真实场景。

7
哪个对node.js上的并发任务更好?纤维?网络工作者?还是线程?
我前一段时间偶然发现了node.js,非常喜欢。但是很快我发现它严重缺乏执行CPU密集型任务的能力。因此,我开始使用Google搜索,并找到了解决这些问题的答案:光纤,Webworkers和线程(go-a-gogo)。现在使用哪个是一个混乱的问题,肯定需要使用其中的一个-毕竟,拥有一台只擅长IO且无其他优点的服务器的目的是什么?需要建议! 更新: 我在想一种落后的方法。只是需要建议。现在,我想到的是:让我们来一些线程(使用thread_a_gogo或webworkers)。现在,当我们需要更多它们时,我们可以创建更多。但是在创建过程中会有一些限制。(不是系统暗示的,但可能是因为开销)。现在,当我们超过限制时,我们可以派生一个新节点,并开始在该节点上创建线程。这样,它可以一直持续到我们达到某个极限(毕竟,过程也有很大的开销)。当达到此限制时,我们开始排队任务。每当线程空闲时,就会为它分配一个新任务。这样,它可以顺利进行。 所以,这就是我的想法。这个主意好吗?我对所有这些过程和线程东西还是有点陌生​​,所以没有任何专业知识。请分享您的意见。 谢谢。:)

15
Chrome无法加载网络工作者
我正在使用网络工作者的项目中。 在我的头部,我有以下代码: var worker = new Worker("worker.js"); // More code 在Safari中可以正常工作,但是Chrome报告以下错误: Uncaught SecurityError: Failed to create a worker: script at '(path)/worker.js' cannot be accessed from origin 'null'. 为什么这可以在Safari中完美运行,但不能在Chrome中正常运行?我该如何解决? 谢谢。


2
如何在JavaScriptCore中向WebWorker的上下文添加新的本机类?
我有一个在webkit-gtk浏览器中通过JavaScriptCore扩展JavaScript的应用程序。现在,我有几个类可以添加到全局上下文中,如下所示: void create_js(gpointer context, char* className, JSClassDefinition clasDefinition) { JSClassRef classDef = JSClassCreate(&clasDefinition); JSObjectRef classObj = JSObjectMake(context, classDef, context); JSObjectRef globalObj = JSContextGetGlobalObject(context); JSStringRef str = JSStringCreateWithUTF8CString(className); JSObjectSetProperty(context, globalObj, str, classObj, kJSPropertyAttributeNone, NULL); JSStringRelease(str); } 现在,我还要将这些类添加到WebWorker的上下文中,以便可以从JS中实例化的工作程序中调用它们。 我试着Worker像这样获取对象: JSStringRef workerStr = JSStringCreateWithUTF8CString("Worker"); JSObjectRef worker = JSObjectGetProperty(context, globalObj, workerStr, NULL); JSObjectSetProperty(context, worker, …

1
WebWorker计算慢速正则表达式匹配的速度明显慢(3x)-仅适用于Firefox
首先,我只是为自己创建了一个正则表达式,该表达式将匹配项目中所有头文件列表中的所有唯一外部库路径。我一周前问过一个关于制作该正则表达式的问题。 我开始四处看看,以了解异步和变成Web worker时的行为。为了方便和可靠,我创建了在所有三种模式下运行的通用文件: /** Will call result() callback with every match it founds. Asynchronous unless called * with interval = -1. * Javadoc style comment for Arnold Rimmer and other Java programmers: * * @param regex regular expression to match in string * @param string guess what * @param result …

9
如何从字符串创建Web Worker
如何使用通过字符串(通过POST请求提供)创建Web Worker? 我可以想到的一种方法(但我不确定如何实现)是通过从服务器响应创建数据URI,并将其传递给Worker构造函数,但是我听说有些浏览器不允许这是因为相同的原产地政策。 MDN指出围绕数据URI的起源策略的不确定性: 注意:作为Worker构造函数的参数传递的URI必须遵守同源策略。当前,浏览器供应商之间在数据URI是否具有相同来源方面存在分歧。Gecko 10.0(Firefox 10.0 / Thunderbird 10.0)及更高版本的确允许数据URI作为工作程序的有效脚本。其他浏览器可能会不同意。 这也是在whatwg上讨论它的帖子。

5
AngularJS和网络工作者
angularJS如何使用Web Worker在后台运行进程?我有什么模式可以遵循吗? 当前,我正在使用在单独的Web worker中具有模型的服务。该服务实现的方法如下: ClientsFacade.calculateDebt(client1); //Just an example.. 在实现中,此方法将消息与数据一起发送给工作程序。这使我可以抽象出它是在单独的线程中执行的事实,并且我还可以提供一种对服务器甚至在同一线程中执行此操作的服务器进行查询的实现。 由于我是Java语言的新手,我只是在回收其他平台上的知识,因此我想知道这是否是您可以做的事情,或者我正在使用的Angular提供了一种实现方法。这也引入了我的体系结构中的更改,因为工作人员必须将更改显式地推送到控制器,然后更新其值,然后将其反映在视图中,我是否对此进行了过度设计?令人沮丧的是,Web工作者通过不允许我共享内存等来“保护”我太多,以防万一。

2
使WebWorkers成为安全的环境
为了寻求一个能够在浏览器中运行任意javascript代码的界面,而又没有安全漏洞的大小,Esailija建议使用Web Workers。它们在半沙盒环境(没有DOM访问并且已经在浏览器内部)中运行,并且可以被杀死,因此用户无法将它们置于无限循环中。 这是他提出的示例:http : //tuohiniemi.fi/~runeli/petka/workertest.html(打开控制台) jsfiddle(仅适用于Google chrome) 现在,这似乎是一个很好的解决方案。但是,它是完整的(或接近完整的)吗?有什么明显的遗漏吗? 可以在github上找到整个内容(因为它已经连接到了bot):worker,evaluator 主要: workercode = "worker.js"; function makeWorkerExecuteSomeCode( code, callback ) { var timeout; code = code + ""; var worker = new Worker( workercode ); worker.addEventListener( "message", function(event) { clearTimeout(timeout); callback( event.data ); }); worker.postMessage({ code: code }); timeout = window.setTimeout( function() …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.