workers usar react importscripts google examples example end como javascript webkit customization web-worker javascriptcore

javascript - usar - web worker vs service worker



¿Cómo agregar una nueva clase nativa al contexto de WebWorker en JavaScriptCore? (2)

Tengo una aplicación que extiende JavaScript a través de JavaScriptCore, en un navegador webkit-gtk. En este momento tengo varias clases que agrego al contexto global de esta manera:

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); }

Ahora, me gustaría agregar también esas clases al contexto del WebWorker, para poder llamarlas desde los trabajadores instanciados en JS.

Intenté obtener el objeto Worker manera:

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

Pero eso lo agrega al objeto WorkerConstructor , y cuando se llama a un new Worker() , las clases no están disponibles.


No hay forma de modificar WorkerGlobalScope o ámbitos / contextos comparables antes de que se inicie un trabajador web en las implementaciones de navegador más comunes. Estos ámbitos están disponibles solo para el contexto de los trabajadores web tan pronto como se lanza este trabajador web específico.

La única forma de usar métodos compartidos es definirlos en un archivo / recurso compartido separado e incluirlos usando importScripts()

self.importScripts(''foo.js''); self.importScripts(''foo.js'', ''bar.js'', ...); importScripts(''foo.js''); importScripts(''foo.js'', ''bar.js'', ...);

Nota: importScripts() y self.importScripts() son efectivamente equivalentes; ambos representan importScripts() se llama desde el ámbito interno del trabajador.

Fuentes


Use "importScripts ()" para compartir los recursos con WorkerGlobalScope

importScripts(''resource.js'');