标签: web-worker

Web工作者没有单独的Javascript文件?

据我所知,Web worker需要在一个单独的JavaScript文件中编写,并像这样调用:

new Worker('longrunning.js')
Run Code Online (Sandbox Code Playgroud)

我正在使用闭包编译器来组合和缩小我的所有JavaScript源代码,而我宁愿不必将我的worker放在单独的文件中进行分发.有办法做到这一点吗?

new Worker(function() {
    //Long-running work here
});
Run Code Online (Sandbox Code Playgroud)

鉴于第一类函数对JavaScript至关重要,为什么执行后台工作的标准方法必须从服务器加载整个'其他JavaScript文件?

javascript web-worker

279
推荐指数
9
解决办法
7万
查看次数

Node.js和CPU密集型请求

我已经开始修补Node.js HTTP服务器,并且非常喜欢编写服务器端Javascript,但有些东西阻止我开始使用Node.js作为我的Web应用程序.

我理解整个异步I/O概念,但我有点担心程序代码非常CPU密集的边缘情况,例如图像处理或排序大数据集.

据我了解,服务器对于简单的网页请求非常快,例如查看用户列表或查看博客帖子.但是,如果我想编写非常CPU密集型代码(例如在管理员后端)生成图形或调整数千个图像的大小,请求将非常慢(几秒钟).由于此代码不是异步的,因此在几秒钟内发送到服务器的每个请求都将被阻止,直到我的慢请求完成为止.

一个建议是使用Web Workers进行CPU密集型任务.但是,我担心网络工作者会很难编写干净的代码,因为它的工作原理是包含一个单独的JS文件.如果CPU密集型代码位于对象的方法中该怎么办?为每个CPU密集型方法编写一个JS文件真是太糟糕了.

另一个建议是生成子进程,但这使得代码更难以维护.

有什么建议可以克服这个(感知的)障碍吗?如何使用Node.js编写干净的面向对象代码,同时确保CPU重任务执行异步?

javascript web-worker serverside-javascript node.js

205
推荐指数
4
解决办法
5万
查看次数

171
推荐指数
3
解决办法
4万
查看次数

对于node.js上的并发任务哪个更好?纤维?网络工作人员?还是线程?

我在前一段时间偶然发现了node.js并且非常喜欢它.但很快我发现它缺乏执行CPU密集型任务的能力.所以,我开始使用谷歌搜索并得到这些答案来解决问题:纤维,Web工作者和线程(thread-a-gogo).现在使用哪一个是一个混乱,其中一个肯定需要使用 - 毕竟有一个擅长IO的服务器的目的是什么?建议需要!

更新:

我正在想办法离开; 只是需要建议.现在,我想到的是:让我们有一些线程(使用thread_a_gogo或webworkers).现在,当我们需要更多时,我们可以创造更多.但是在创建过程中会有一些限制.(系统没有暗示,但可能是因为开销).现在,当我们超出限制时,我们可以派生一个新节点,并开始在其上创建线程.这样,它可以持续到我们达到某个极限(毕竟,进程也有很大的开销).达到此限制后,我们将开始排队任务.每当一个线程空闲时,它将被分配一个新任务.这样,它可以顺利进行.

所以,这就是我的想法.这个想法好吗?我对所有这些过程和线程都有点新意,所以没有任何专业知识.请分享您的意见.

谢谢.:)

concurrency multithreading web-worker fibers node.js

109
推荐指数
3
解决办法
4万
查看次数

如何在JavaScriptCore中向WebWorker的上下文添加新的本机类?

我有一个应用程序,它通过JavaScriptCore在webkit-gtk浏览器中扩展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);
}
Run Code Online (Sandbox Code Playgroud)

现在,我还想将这些类添加到WebWorker的上下文中,因此我可以从JS中实例化的worker中调用它们.

我试过Worker这样的对象:

JSStringRef workerStr = JSStringCreateWithUTF8CString("Worker");
JSObjectRef worker = JSObjectGetProperty(context, globalObj, workerStr, NULL);
JSObjectSetProperty(context, worker, str, classObj, kJSPropertyAttributeNone, NULL);
JSStringRelease(workerStr);
Run Code Online (Sandbox Code Playgroud)

但是这会将它添加到WorkerConstructor对象中,并且当new Worker()调用a时,这些类不可用.

javascript customization webkit web-worker javascriptcore

101
推荐指数
1
解决办法
1817
查看次数

Chrome无法加载网络工作者

我正在开发一个使用Web worker的项目.

在我的脑子部分,我有这个代码:

var worker = new Worker("worker.js");
// More code
Run Code Online (Sandbox Code Playgroud)

这在Safari中运行良好,但Chrome报告以下错误:

Uncaught SecurityError: Failed to create a worker: script at '(path)/worker.js' cannot be accessed from origin 'null'.

为什么这在Safari中完美运行而不是Chrome?我该如何解决?

谢谢.

javascript google-chrome web-worker

100
推荐指数
9
解决办法
6万
查看次数

WebWorker计算慢速正则表达式匹配显着较慢(3x) - 仅限Firefox

首先,我创建了一个正则表达式,它将匹配项目中所有头文件列表中的所有唯一外部库路径.我问过一个星期前制作正则表达式的问题.

我开始插手,看看它在异步和变成web工作时的行为方式.为了方便和可靠,我创建了这个在所有三种模式下运行的通用文件:

/** 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 callback function that accepts one parameter, string match
 * @param done callback on finish, has no parameters
 * @param interval delay (not actual interval) between finding matches. …
Run Code Online (Sandbox Code Playgroud)

javascript regex firefox web-worker

85
推荐指数
1
解决办法
1888
查看次数

如何从字符串创建Web Worker

如何使用从字符串创建Web worker(通过POST请求提供)?

我能想到的一种方法,但我不确定如何实现它,是通过从服务器响应创建数据URI,并将其传递给Worker构造函数,但我听说有些浏览器不允许这,因为相同的原产地政策.

MDN陈述围绕数据URI的原始政策的不确定性:

注意:作为Worker构造函数的参数传递的URI必须遵循同源策略.目前,浏览器供应商对数据URI是否来源不一致存在分歧; Gecko 10.0(Firefox 10.0/Thunderbird 10.0)及更高版本确实允许数据URI作为工作人员的有效脚本.其他浏览器可能不同意.

这里还有一篇关于whatwg讨论它的帖子.

javascript web-worker data-uri

76
推荐指数
3
解决办法
3万
查看次数

服务工作者可以做什么,网络工作者不能?

服务工作者可以做什么,网络工作者不能?或相反亦然?

Web工作者似乎是服务工作者功能的一个子集.它是否正确?

html javascript w3c web-worker service-worker

75
推荐指数
3
解决办法
1万
查看次数

AngularJS和网络工作者

angularJS如何使用Web worker在后台运行进程?这样做我应该遵循什么模式?

目前,我正在使用一个在单独的Web worker中具有该模型的服务.此服务实现以下方法:

ClientsFacade.calculateDebt(client1); //Just an example..
Run Code Online (Sandbox Code Playgroud)

在实现中,此方法使用数据向worker发送消息.这允许我抽象它在一个单独的线程中执行的事实,我还可以提供一个查询服务器的实现,甚至是在同一个线程中执行此操作的实现.

由于我是javascript的新手,而且我只是从其他平台上回收知识,我想知道这是你要做的事情,还是我正在使用的Angular,提供了一种方法.这也引入了我的架构的变化,因为工作人员必须明确地将更改推送到控制器,然后控制器更新其值,然后这反映在视图中,我是否过度设计了这个?有点令人沮丧的是,网络工作者通过不允许我共享内存等来"保护"我.

javascript web-worker angularjs

72
推荐指数
4
解决办法
5万
查看次数