Tentando obter uma imagem em base64 do web-worker. Tudo está bem, exceto o trabalhador está respondendo várias vezes para .onmessage
evento:
parte main.js:
var worker = new Worker( "js/ww.js" );
worker.onmessage = function(e) {
console.log( e );
};
worker.postMessage( { url: "/api/aerial?x=159&y=94&zoom=8&base64=true" } );
ww.js, parte WebWorker:
var self = this;
function makeRequest( url ) {
var httpRequest = new XMLHttpRequest();
if ( !httpRequest ) {
console.error( "Giving up. Cannot create an XMLHTTP instance." );
return false;
}
httpRequest.onreadystatechange = function() {
var response = httpRequest.responseText;
self.onMessage = postMessage( response );
};
httpRequest.open( "GET", url, true );
httpRequest.send();
}
self.addEventListener( "message", function( event ) {
makeRequest( event.data.url );
});
Por que está disparando várias vezes?
Isso pode ter acontecido devido ao uso de AJAX nativo?
Respostas:
0 para resposta № 1Verifique o estado correto e o status da solicitação.
Na tua onreadystatechange
-handler, você deve fazer o seguinte:
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
var response = httpRequest.responseText;
self.onMessage = postMessage( response );
}
}