Search code examples
javascriptweb-worker

How Can I use Other Libraries in a Web Worker?


I have some javascript code like this,

var worker = new Worker("javascript/worker.js");

worker.onmessage = function(evt)
{
    // stuff
}

worker.js looks like this,

importScripts("base.js");

function getImage()
{
    $.ajax({
    url: 'URL'
    dataType: "text/plain; charset=x-user-defined",
    mimeType: "text/plain; charset=x-user-defined",
    success: function(data, textStatus, jqXHR)
    {
        callback();
    }
});
}

The worker.js file does not have jQuery included so that doesn't work. If I add this to worker.js,

importScripts("jQuery.js");

Then I get the message,

Uncaught ReferenceError: window is not defined

I'm not really familiar with workers. Am I right in thinking this it is loading the worker.js code in a completely separate environment (basically a background thread) so it doesn't have access to window.


Solution

  • Yeah it has been correctly pointed out to me that the ajax call is asynchronous so the worker is not required. For circumstances which I won't explain turns out that the ajax call didn't work anyway, so I reverted back to the XMLHttpRequest how it was and left it using a worker.