Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Global variable in Web worker

I am using this Web worker which has a Global variable declared in it. Can I access the same (Global variable in worker 1) in the newly spawned web worker(worker 2)?

When I've tried using jQuery in web worker, I get error "window is not defined". Is there any way to use jQuery in a Web Worker?

 importScripts('jquery-latest.js');  function fetch_ajax(url) {   $.ajax({     type: 'GET',      url: url,     success: function(response) {     postMessage(response);         }   }); }  fetch_ajax('test.txt'); 
like image 996
Nigilan Avatar asked Jun 27 '12 05:06

Nigilan


People also ask

What are global variables in web technology?

A global variable is a variable that is declared in the global scope in other words, a variable that is visible from all other scopes. In JavaScript it is a property of the global object.

What are global variables in HTML?

Global Variables are the variables that can be accessed from anywhere in the program. These are the variables that are declared in the main body of the source code and outside all the functions.

Can Webworkers access DOM?

Web workers can't access DOM elements from the web page. Web workers can't access global variables and JavaScript functions from the web page. Web workers can't call alert() or confirm() functions. Objects such as window, document and parent can't be accessed inside the web worker.

How many web workers web workers can run concurrently?

A web worker is a JavaScript program running on a different thread, in parallel with main thread. The browser creates one thread per tab. The main thread can spawn an unlimited number of web workers, until the user's system resources are fully consumed.


1 Answers

Web Workers don't have a window object.

To access global state, use self instead, code that will work on both the main thread and the worker thread.

But note that you still won't be able to access or manipulate the parent DOM (e.g. get window.jQuery via self.jQuery).

While the main thread window self points to the Window object, in worker threads self points to a separate WorkerGlobalScope object.

like image 142
buley Avatar answered Oct 02 '22 21:10

buley