[英]How Can I use Other Libraries in a Web Worker?
我有一些像這樣的javascript代碼,
var worker = new Worker("javascript/worker.js");
worker.onmessage = function(evt)
{
// stuff
}
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();
}
});
}
worker.js文件沒有包含jQuery,因此不起作用。 如果我將它添加到worker.js,
importScripts("jQuery.js");
然后我收到消息,
Uncaught ReferenceError: window is not defined
我對工人並不熟悉。 我是否認為這是在一個完全獨立的環境(基本上是后台線程)中加載worker.js代碼,因此它無法訪問窗口。
在worker的.js文件中:
importScripts('../relative/path/lib.min.js', '../../other/lib.js');
為了防止Web worker遇到並發問題,Web worker規范阻止了worker訪問window對象或DOM。
工作者中唯一可用的對象和方法是:
因此,您可以使用worker手動創建XMLHttpRequest; 期望能夠訪問DOM或Window對象的Jquery或任何其他庫永遠不會在那里工作。
是的,我已正確地指出ajax調用是異步的,因此不需要worker。 對於我不會解釋的情況,結果是ajax調用無論如何都沒有用,所以我回到了XMLHttpRequest它是怎么回事並讓它使用了一個worker。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.