¿Cómo ejecutaría código que no fuera de una cadena? Aquí hay un ejemplo:
var ready = false; executeWhen(ready == true, function() { console.log("hello"); }); function executeWhen(statement, code) { if (statement) { window.setTimeout(executeWhen(statement, code), 100); } else { /* execute 'code' here */ } } setTimeout(function(){ready = true}, 1000); ¿Puedo usar eval(); ? No lo creo, creo que eso es solo para cuerdas.
Lo llamas con code() .
También debe cambiar la statement a una función, por lo que obtendrá un valor diferente cada vez que la pruebe.
Y cuando llamas a executeWhen() en setTimeout() , tienes que pasar una función, no llamarla inmediatamente, lo que provoca una recurrencia infinita.
var ready = false; executeWhen(() => ready == true, () => console.log("hello")); function executeWhen(statement, code) { if (!statement()) { window.setTimeout(() => executeWhen(statement, code), 100); } else { code(); } } setTimeout(function() { ready = true }, 1000);