validar validacion una programacion pasar pagina otra funcion formularios formulario enviar ejemplos ejecutar datos con cargar carga attribute asincrona antes javascript invoke method-invocation

javascript - validacion - Cómo ejecutar un método pasado como parámetro para funcionar



validar formulario javascript antes de enviar (7)

Quiero escribir mi propia función en JavaScript que toma un método de devolución de llamada como parámetro y lo ejecuta después de la finalización, no sé cómo invocar un método en mi método que se pasa como argumento. Como la reflexión

código de ejemplo

function myfunction(param1, callbackfunction) { //do processing here //how to invoke callbackfunction at this point? } //this is the function call to myfunction myfunction("hello", function(){ //call back method implementation here });


Haré algo como esto

var callbackfunction = function(param1, param2){ console.log(param1 + '' '' + param2) } myfunction = function(_function, _params){ _function(_params[''firstParam''], _params[''secondParam'']); }

En el bloque de código principal, es posible pasar parámetros

myfunction(callbackfunction, {firstParam: ''hello'', secondParam: ''good bye''});


Otra forma es declarar su función como función anónima y guardarla en una variable:

var aFunction = function () { };

Después de eso, puede pasar una función como argumento a mi función y llamarla normalmente.

function myfunction(callbackfunction) { callbackfunction(); } myfunction(aFunction);

Sin embargo, como han señalado otras respuestas, no es necesario, ya que puede usar directamente el nombre de la función. Mantendré la respuesta como está, debido a la discusión que sigue en los comentarios.


Puedes simplemente llamarlo como una función normal:

function myfunction(param1, callbackfunction) { //do processing here callbackfunction(); }

Lo único adicional es mencionar el contexto . Si desea poder utilizar la palabra clave this dentro de su devolución de llamada, tendrá que asignarla. Este es un comportamiento frecuentemente deseable. Por ejemplo:

function myfunction(param1, callbackfunction) { //do processing here callbackfunction.call(param1); }

En la devolución de llamada, ahora puede acceder a param1 como this . Ver Function.call .


Todos los ejemplos aquí parecen mostrar cómo declararlo, pero no cómo usarlo. Creo que también es por eso que @Kiran tenía tantos problemas.

El truco es declarar la función que usa una devolución de llamada:

function doThisFirst(someParameter, myCallbackFunction) { // Do stuff first alert(''Doing stuff...''); // Now call the function passed in myCallbackFunction(someParameter); }

El bit someParameter se puede omitir si no se requiere.

A continuación, puede usar la devolución de llamada de la siguiente manera:

doThisFirst(1, myOtherFunction1); doThisFirst(2, myOtherFunction2); function myOtherFunction1(inputParam) { alert(''myOtherFunction1: '' + inputParam); } function myOtherFunction2(inputParam) { alert(''myOtherFunction2: '' + inputParam); }

Observe cómo se transfiere la función de devolución de llamada y se declara sin comillas o corchetes .

  • Si usa doThisFirst(1, ''myOtherFunction1''); fallará
  • Si usa doThisFirst(1, myOtherFunction3()); (Sé que no hay entrada de parámetros en este caso), llamará a myOtherFunction3 primero para que pueda obtener efectos secundarios no deseados.

Yo también entré en el mismo escenario donde tengo que llamar a la función enviada como parámetro a otra función.

Lo intenté

mainfunction(''callThisFunction'');

Primer enfoque

function mainFuntion(functionName) { functionName(); }

Pero termina en errores. Así que lo intenté

Segundo enfoque

functionName.call().

Todavía no uso Así que lo intenté

Tercer enfoque

this[functionName]();

que funcionó como un campeón. Entonces, esto es solo agregar una forma más de llamar. Puede que haya un problema con mi primer y segundo enfoque, pero en lugar de buscar en Google más y gastar tiempo fui para el tercer enfoque.


object[functionName]();

objeto: se refiere al nombre del objeto.

functionName: es una variable cuyo valor usaremos para llamar a una función.

al poner la variable utilizada para referirse al nombre de la función dentro de [] y () fuera del paréntesis, podemos llamar dinámicamente la función del objeto usando la variable. La notación de puntos no funciona porque cree que ''nombre de función'' es el nombre real de la función y no el valor que ''nombre de función'' contiene. Esto me volvió loco un poco, hasta que encontré este sitio. Estoy contento de que .com exista <3


function myfunction(param1, callbackfunction) { //do processing here callbackfunction(); // or if you want scoped call, callbackfunction.call(scope) }