vademecum toma sobredosis precio pastillas niños melatonina engorda comprar como javascript sleep web-worker

javascript - toma - melatonina sobredosis



¿Es posible hacer que los trabajadores web se duerman? (2)

Webworkers son esencialmente funciones que se llaman a través de onMessage , por lo que hacer que se "duerman" debería ser simplemente una cuestión de enviar un mensaje específico a un período de tiempo determinado.

A diferencia de los subprocesos en lenguajes como Java, los WebWorkers no necesitan operar en un bucle continuo (y el consumo de CPU) para conservar la utilidad; Se pueden enviar tantas veces como se desee.

En este ejemplo, el trabajador "duerme" mientras espera la entrada del usuario.

index.html:

<script> var worker = new Worker("worker.js"); worker.onmessage = function(e) { console.log("Send and recieved " + e.data); } function tellWorker(element) { var data = element.value; worker.postMessage(data); } </script>

worker.js:

self.onmessage = function(e) { self.postMessage(e.data); }

Perdóname si malinterpreto tu pregunta.

Edición: Otra posibilidad es, asumiendo que WebWorker está ejecutando en un bucle setTimeout , escuche un mensaje que pueda llamar a clearTimeout mientras un usuario está haciendo algo.

Actualizar:

Este código creará un objeto, lo modificará a través del trabajador y luego lo modificará de nuevo después de que la página principal ajuste una marca:

index.html:

<input type="button" value="start" onclick="startWork()" /><br> <input type="button" value="passObject" onclick="finishWork()" /> <script> var worker = new Worker("worker.js"); var incompleteObject = { val : 0, done : false }; worker.onmessage = function(e) { console.log("Exit Status: "); console.log(e.data); } function startWork() { worker.postMessage(incompleteObject); } function finishWork() { incompleteObject.done = true; worker.postMessage(incompleteObject); } </script>

worker.js:

self.onmessage = function(e) { var obj = e.data; if(obj.done == false) { obj.val = 2; } else { obj.val = 4; } self.postMessage(obj); }

Dado que los trabajadores de la web niegan las desventajas de la ejecución en pausa en JavaScript, ya que no bloquearán la interfaz de usuario, ¿existe un método confiable para hacer que Sleep ?

¿Ya sea por un tiempo designado, o hasta que reciban un mensaje?


setTimeout y setInterval están disponibles para los trabajadores web. Entonces, si quiere "esperar" su código, esta puede ser la mejor solución.