Traté de trabajar este código:
var foo=0 window.onmouseup=function(){ foo=1 } window.onmousedown=function(){ while(foo==0); console.log("bar") }la "barra" no se muestra y el navegador (uso Edge) se atascó allí (no se puede cerrar la página), tuve que usar Ctrl+T y luego Ctrl+W
Supongo que el problema es que foo==0 está optimizado, por lo que lee desde el caché, pero no sé cómo evitarlo. ¿O hay otros métodos?
Podría usar setInterval() y poner la instrucción if y el resto del código allí:
var foo = 0 window.onmouseup = function() { foo = 1 } window.onmousedown = function() { var interval = setInterval(() => { if (foo !== 0) { clearInterval(interval); console.log("bar") } }); }En realidad, creo que el problema es que su ciclo while continuará ejecutándose hasta que se "rompa" o finalice el ciclo. Sin embargo, foo siempre será 1 y nunca 0 después de mouseup , por lo tanto, el programa se atasca en el bucle while para siempre y no se ejecutan otras tareas en el navegador, incluidas las importantes.
TL:DR programa atascado while