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 :)
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With