如何在Web Worker中使用其他库?

pet*_*ter 5 javascript web-worker

我有一些这样的javascript代码,

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

worker.onmessage = function(evt)
{
    // stuff
}
Run Code Online (Sandbox Code Playgroud)

worker.js看起来像这样,

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();
    }
});
}
Run Code Online (Sandbox Code Playgroud)

worker.js文件没有包含jQuery,因此不起作用.如果我将它添加到worker.js,

importScripts("jQuery.js");
Run Code Online (Sandbox Code Playgroud)

然后我收到消息,

Uncaught ReferenceError: window is not defined
Run Code Online (Sandbox Code Playgroud)

我对工人并不熟悉.我是否正确地认为它是在一个完全独立的环境(基本上是后台线程)中加载worker.js代码,因此它无法访问窗口.

小智 11

在worker的.js文件中:

importScripts('../relative/path/lib.min.js', '../../other/lib.js');
Run Code Online (Sandbox Code Playgroud)


pet*_*ter -1

是的,已经正确地向我指出 ajax 调用是异步的,因此不需要工作人员。对于我不会解释的情况,事实证明 ajax 调用无论如何都不起作用,所以我恢复到 XMLHttpRequest 的原样并使用工作人员保留它。