Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

103
Views
Enviar una publicación a otra página dentro de un webworker

Estoy tratando de publicar algunos datos en una página dentro de un trabajador web y luego publicar el resultado del trabajador en el método de llamada, pero no puedo hacer que funcione. Al usar self.postMessage(obj), publica el resultado correctamente en el script de origen, pero parece que no puedo enviar un mensaje de publicación a un tercero antes de eso.

Intenté usar ajax dentro del método self.onMessage, pero parece que no puedo usar jquery dentro. Y también he intentado solucionar problemas si puedo usar la función postMessage() para enviar con una URL proporcionada, pero parece que no está preintegrada. ¿Hay otra función que pueda usar?

Este es mi script (este es el código de trabajador real):

 self.onmessage = function(event) { id = event.data.id; var url = "/lib/fetchData.php"; var data = {}; data.id = id; var json = JSON.stringify(data); var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8'); xhr.onload = function() { if (this.status == 200) { /* Here I want to send a post to a provided url. Like: var url2 = ""; var data = { "uid" : 3, "utype" : 1, }; postMessage(url2, data); // Is there more valid function for this? */ var test = JSON.parse(xhr.responseText); self.postMessage(test); // This post is posting result from fetchData.php back to the originscript as expected } } xhr.onerror = function() { }; xhr.send(json); };

¿Existe una función preconstruida para realizar este tipo de operación o algún otro método de mejores prácticas para lograr lo mismo?

Actualización: la razón por la que quiero ejecutar la publicación en segundo plano es porque anteriormente tenía la solicitud posterior en el hilo principal, pero estaba provocando que la interfaz de usuario se congelara mientras se realizaba la publicación (los datos que se publicarán a veces pueden ser bastante grandes).

Actualización 2:

Creo que he encontrado una manera de publicar datos dentro del trabajador. Traté de crear un nuevo xmlhttprequest dentro del actual. No puedo verificar que funcione porque la URL es de un tercero, pero parece que funciona. Aunque no estoy seguro de que sea una buena práctica;)

 var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8'); xhr.onload = function() { if (this.status == 200) { var data = { "uid" : 3, "utype" : 1, }; var xhr2 = new XMLHttpRequest(); xhr2.open("POST", "url", true); xhr2.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr2.send(data); var test = JSON.parse(xhr.responseText); self.postMessage(test); } }
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!