From 1109132f09d75da9a28b649c7677bb6ce07c40c0 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:41:45 -0500 Subject: initial commit --- files/es/web/api/web_workers_api/index.html | 226 ++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 files/es/web/api/web_workers_api/index.html (limited to 'files/es/web/api/web_workers_api/index.html') diff --git a/files/es/web/api/web_workers_api/index.html b/files/es/web/api/web_workers_api/index.html new file mode 100644 index 0000000000..3a055af3ca --- /dev/null +++ b/files/es/web/api/web_workers_api/index.html @@ -0,0 +1,226 @@ +--- +title: Web Workers API +slug: Web/API/Web_Workers_API +translation_of: Web/API/Web_Workers_API +--- +

{{DefaultAPISidebar("Web Workers API")}}

+ +

Los Web Workers hacen posible ejecutar la operación de un script en un hilo en segundo plano separado de la ejecución el hilo principal de la aplicación web. La ventaja de esto es que un proceso laborioso puede actuar en un hilo separado, permitiendo al hilo principal (normlamente la UI) ejecutarse sin ser bloqueado o ralentizado.

+ +

Web Workers conceptos y uso

+ +

Un worker es un objeto que se crea a través del constructor ( {{domxref("Worker.Worker", "Worker()")}}) este ejecuta un archivo javascript — este fichero contiene los scripts que se van a ejecutan en el hilo del worker; los workers se ejecutan en un contexto global diferente al actual del navegador {{domxref("window")}}. Este contexto está representado por el objeto {{domxref("DedicatedWorkerGlobalScope")}} en el caso de los workers dedicados (los workers standard utilizan un solo script; y los shared workers usan {{domxref("SharedWorkerGlobalScope")}}).

+ +

Podemos ejecutar los script que necesitemos dentro del hilo del worker, pero con algunas excepciones. Por ejemplo no se puede manipular directamente el DOM, ni usar algunos métodos y propiedades por defecto del objeto {{domxref("window")}}. Pero puede usar un gran número de elementos que están dentro de window, incluyendo WebSockets, y data storage formas de almacenamiento como IndexedDB y solo en Firefox OS Data Store API.  Mira Funciones y clases disponibles para workers para saber más.

+ +

Los datos se comunican entre los workers y el hilo principal a través de un sistema de mensajes — tanto del hilo principal como del worker para enviar un mensaje se invoca al método postMessage() , y a través del listener del evento onmessage se pueden escuchar los mensajes (El mensaje está dentro de la propiedad data del evento) . Los datos se copian en lugar de compartirse.

+ +

Los workers también pueden generar nuevos workers, siempre que los workers estén en la misma página que el principal.  Además, los workers pueden usar XMLHttpRequest para la network I/O, con la excepción de que los atributos responseXML y channel de XMLHttpRequest siempre retornan valor null.

+ +

Ademas de los workers dedicados, hay otro tipo de workers:

+ + + +
+

Note: Según el Web workers Spec, los errores del worker no deberían bubujear (mira {{bug(1188141)}}. Esto está implementado en Firefox 42.

+
+ +

Web Worker interfaces

+ +
+
{{domxref("AbstractWorker")}}
+
Abstrae todas las propiedades y métodos comunes a toda clase de workers (i.e. {{domxref("Worker")}} or {{domxref("SharedWorker")}}).
+
{{domxref("Worker")}}
+
Representa el hilo del worker en ejecución, pudiendo pasar mensajes a este.
+
{{domxref("WorkerLocation")}}
+
Define la ruta absoluta del script que ejecuta el Worker.
+
+ +
+
{{domxref("SharedWorker")}}
+
Representa un tipo de worker al que se puede acceder desde distintos contextos de navegación, tanto de varias ventanas, iframes, y otros workers.
+
{{domxref("WorkerGlobalScope")}}
+
Representa el ámbito genérico de cualquier worker (similar a  {{domxref("Window")}} en un contenido web normal). Los diferentes tipos de workers tienen objetos de ámbito que heredan de esta interfaz y añade características más específicas.
+
{{domxref("DedicatedWorkerGlobalScope")}}
+
Representa el ámbito de un worker dedicado, hereda de {{domxref("WorkerGlobalScope")}} y añade algunas características.
+
{{domxref("SharedWorkerGlobalScope")}}
+
Representa el ámbito de un shared worke, hereda de {{domxref("WorkerGlobalScope")}} y añade algunas características.
+
{{domxref("WorkerNavigator")}}
+
Representa la identidad y estado del user agent (El cliente):
+
+ +

Examples

+ +

Hemos creado un par de demostraciones para ver su uso básico:

+ + + +

You can find out more information on how these demos work in Using web workers.

+ +

Especificaciones

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#workers')}}{{Spec2('HTML WHATWG')}}
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
soporte básico4{{CompatVersionUnknown}}{{CompatGeckoDesktop(1.9.1)}}10.010.64
Shared workers4{{CompatNo}}{{CompatGeckoDesktop(29)}}{{CompatNo}}10.64
Paso de datos usando structured cloning13{{CompatVersionUnknown}}{{CompatGeckoDesktop(8)}}10.011.56
Paso de datos usando transferable objects17 {{property_prefix("webkit")}}
+ 21
{{CompatNo}}{{CompatGeckoDesktop(18)}}{{CompatNo}}156
Global {{domxref("window.URL", "URL")}}10[1]
+ 23
{{CompatVersionUnknown}}{{CompatGeckoDesktop(21)}}11156[1]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
Soporte básico4.44{{CompatVersionUnknown}}{{CompatGeckoMobile(1.9.1)}}1.0.110.011.55.1
Shared workers{{CompatNo}}4{{CompatNo}}291.4{{CompatNo}}{{CompatNo}}{{CompatNo}}
Pasando datos usando structured cloning{{CompatNo}}4{{CompatVersionUnknown}}81.0.1{{CompatNo}}{{CompatNo}}{{CompatNo}}
Pasando datos usando transferable objects{{CompatNo}}{{CompatNo}}{{CompatNo}}181.0.1{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] As webkitURL.

+ +

See also

+ + -- cgit v1.2.3-54-g00ecf