¿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

  • Declaración de function Javascript con los mismos arguments
  • Diferencia entre la function de enlace y cierre en Javascript?
  • Números reales a los valores humanos legibles
  • No se puede sobrescribir la function desde dentro de la function
  • Valores de argumento pnetworkingeterminados en funciones de JavaScript
  • Función auto-invocación y params?
  • (Ruby, Rails, Javascript) Arrastre y suelte sin molestar al server ...?
  • JS: funciones de los valores pnetworkingeterminados de los arguments
  • ¿Cómo insert un salto de línea con javascript?
  • La function de validation de formularios de Javascript no funciona correctamente
  • Función Require () en JavaScript
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.