Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML Web Worker and Jquery Ajax call

I'm wondering if I can use jQuery inside the web worker file. Google Chrome gives me this error: "Uncaught ReferenceError: $ is not defined".

Here is the code: The parent file:

var loader = new Worker(BASE_URL + "js/rss_loader_worker.js"); // Ask the worker to start loading the RSS from the server loader.postMessage("loadRss"); // When receive the response from the server loader.onmessage = function (event) {   console.log(event.data); } 

The worker file:

onmessage = function (event) {   if (event.data === "loadRss") {     loadRss();   } }  /**  * This function handles the AJAX request to the server side  * then pass the content to the view page  * @param none  * @return html text  */ loadRss = function () {   $.ajax({     data: {city: CITY_LOCATION},     url: BASE_URL + "/getfeeds",     onsucess: function (data) {      }   }); } 

Please help, thank you :)

like image 861
Tri Avatar asked Jan 29 '11 19:01

Tri


2 Answers

No you cannot. There's no access to non-thread safe components or the DOM and you have to pass specific data in and out of a thread through serialized objects. So you have to work really hard to cause problems in your code. jQuery is a JavaScript DOM library.

But you can use a native XMLHttpRequest in your worker however.

And, importing external scripts does not go via the page with a script tag : use importScripts() for that in your worker file.

like image 115
Caspar Kleijne Avatar answered Sep 20 '22 18:09

Caspar Kleijne


Here's what I found:

You can load external script files or libraries into a worker with the importScripts() function.

http://www.html5rocks.com/en/tutorials/workers/basics/#toc-enviornment-loadingscripts

importScripts('script1.js'); importScripts('script2.js'); 

or

importScripts('script1.js', 'script2.js'); 

Although, you cannot load jQuery, because jQuery requires DOM access, which web workers don't have.

like image 36
Sherzod Avatar answered Sep 20 '22 18:09

Sherzod