¿Ejecutando una function pasada como argumento en Javascript?

Intento escribir una function genérica que bloqueará la interfaz de usuario mientras se realiza una llamada AJAX. Lo que bash hacer es tener una function A ejecutar cualquier otra function pasada como argumento. Esto es lo que tengo hasta ahora:

function blockWhileLoading(fn, msg) { if (msg == null) { msg = 'Please wait while the next page is loaded...'; } $.blockUI( { message: '<h1>' + msg + '</h1>', css: { border: 'none', padding: '15px', backgroundColor: '#E3D9BA', '-webkit-border-radius': '10px', '-moz-border-radius': '10px', color: '#4D2612' } }); $('body').scrollLeft(0); setTimeout(function() { eval(fn); $.unblockUI(); }, 1000); } 

Ahora, cuando llega el momento de evaluar la function, nada parece suceder. ¿La evaluación no es la forma correcta de forzar la ejecución de una function?

4 Solutions collect form web for “¿Ejecutando una function pasada como argumento en Javascript?”

No, eval se usa para convertir un trozo de "cadena" en código JavaScript en time de ejecución. Simplemente llame a fn() . Es una reference de function.

Esto es lo que eval hace:

 var myalert = "alert('test');"; eval(myalert); 

Equivalente a:

 eval("alert('test');"); 

Solo usa fn();

Si fn se pasa como un object y no como una cadena, la llamada a fn() debería funcionar.

¿Por qué no usar simplemente:

 fn(); 

En lugar de eval

  • javascript - document.write error?
  • ¿Por qué los arguments.callee perjudican el performance?
  • Usar una matriz para funciones en javascript
  • ¿Los arguments de funciones admiten un valor pnetworkingeterminado en JavaScript?
  • Arreglo Javascript de funciones
  • Prototipo de JavaScript limitado a las funciones?
  • Alcance de variables de la function
  • ¿Por qué mi function solo se ejecuta una vez por carga de página?
  • ¿Cómo definir una function de sorting personalizada en javascript?
  • ¿Cómo puede iterar un solo bucle en varias matrices?
  • error: "Por favor use la request POST" con Formulario y Javascript
  • Convirtiendo una cadena en function en javascript
  • ¿Puedes unir funciones de flecha?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.