Esta respuesta puede ser un poco molesta pero desnuda :-).
Como javascript normalmente se ejecuta dentro de un navegador, que tiene varios subprocesos y javascript puede ocupar varios subprocesos, no existe el concepto de "inactividad global" como lo haría en un programa con subprocesos individuales.
Si desea pausar una operación de manera razonable, es posible que desee considerar lo siguiente.
Digamos que usted quiere a la siguiente
function foo(s) {
var j = 1; var k = 1;
sleep(s); // This would be nice right?
window.alert("Sum is : " + (j+k));
}
En realidad se convierte en:
function foo(s) {
var j = 1 ; var k = 1;
setTimeout(s, function() {
window.alert("Sum is : " + (j+k));
});
}
Por supuesto, el problema es que en un sentido procesal es posible que desee tener algo como
function foo() {
do stuff;
pause();
do more stuff;
return;
}
function bar() {
foo(10);
window.alert("I want this to happen only after foo()");
}
El problema es que no se puede hacer eso usando setTimeout, como se muestra arriba
Sin embargo, usted puede hacer algo como:
function foo(s, afterwards, afterparms) {
var j = 1 ; var k = 1;
setTimeout(s, function() {
window.alert("Sum is : " + (j+k));
afterparms.parm1 = afterparms.parm1.toUpperCase();
afterwards(afterparms);
});
}
function bar() {
foo(10, function() {
window.alert("This will happen after window.alert");
}, { parm1: 'hello', parm2: 'world' });
}
Tenga en cuenta que por encima es sólo una manera de ir sobre la transmisión de información a las funciones, puede hacer algunas cosas realmente buenas, si miras hacia arriba convenciones función de llamada, argumentos variables y tales
Esto es molesto de programar si usted piensa proceduralmente. Sin embargo, hay dos cosas para recordar con respecto a javascript. NO es un lenguaje de procedimiento, NI es un lenguaje orientado a objetos. Javascript es un lenguaje funcional con un sofisticado modelo de gestión de eventos. Entonces debes pensar en esos términos.
Tiene sentido también, ya que la máquina javascript típica es una interfaz gráfica de usuario (navegador web) que, por diseño, no desea bloquear completamente al intentar procesar algo. Imagina que tu navegador se bloquea por completo mientras una página está haciendo algo, querrás estrangular al programador que te hace eso.
El código de JavaScript debe ser de naturaleza 'ignórete y olvídate', y si las cosas tienen que esperar a que ocurra un evento antes de continuar, entonces deberías mirar el modelo de eventos de JavaScript.
Si bien esto es una programación inconveniente cuando se quiere hacer algo trivial, es probable que esté usando pausa para esperar de una manera que pueda correr en condiciones de carrera, y que hay una forma más apropiada de hacerlo. "efecto" que estás tratando de lograr.
Si publica su caso PARTICULAR, puede haber más información próxima sobre cómo se puede abordar tal situación.
Saludos,
¿Puedes exponer un poco tu ejemplo? Parece que 'setInterval()' es lo que buscas, pero no estoy 100% claro en tu caso de uso. –