Ich arbeite daran, einige URL-Abfrageanforderungen an einen Web-Mitarbeiter zu übertragen. Dazu muss ich bestimmte Attribute aus dem DOM-Element der Invokation abrufen, sie an eine URL-Anforderung übergeben und dann das ursprüngliche DOM-Element mit den Ergebnissen aktualisieren. Da mehrere DOM-Elemente diese Funktion zum Abrufen von Aktualisierungen verwenden, muss ich $(this)
oder eine gleichwertige eindeutige Kennung übergeben, um sicherzustellen, dass das richtige Element aktualisiert wird.Übergabe der jQuery-Referenz über Web Worker
Ich verstehe von Fragen wie "Passing objects to a web worker" und "Can I pass a jQuery object to a web worker", dass dies nicht möglich ist, also suche ich nach einem Mittel, um dies zu emulieren.
Hier ist eine grobe Skizze von meinem Code:
//main.js
function update(){
var data = { 'id' : $(this).attr('itemid'),
'filter' : $(this).attr('filter')}
updatePoller.postMessage(data);
}
//worker.js
this.onmessage = function(e){
//format params from e.data
//make GET request to url
//when done...
postMessage(req.responseText);
}
//main.js (again)
updatePoller.onmessage = function(message){
//process response
//update child elements of $(this)
}
Wie Sie sehen können, ich brauche nicht $(this)
innerhalb der Web-Arbeiter zugreifen zu können, aber ich brauche die Referenz, sobald die Anforderung, um zurückgekehrt um das korrekte Element zu aktualisieren. Gibt es Möglichkeiten, einen eindeutigen Verweis auf ein DOM-Element durch einen Web-Mitarbeiter zu übergeben?
Danke, ich es geschafft, die 'id' von' $ passieren (this) 'in an den Worker, und geben Sie dann ein JSON-Objekt vom Worker mit der Antwort- und Element-ID zurück –