Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
Almacenamiento de funciones y sus parámetros en una matriz para llamar más tarde

Me gustaría almacenar varias funciones y sus parámetros en una matriz que luego repetiré y ejecutaré. Al poner los paréntesis alrededor de los parámetros, la función se ejecuta inmediatamente y su valor de matriz se vuelve indefinido. Me gustaría evitar que esto suceda y llamar a la función (con su(s) parámetro(s)) más adelante. Aquí hay un ejemplo de lo que estoy tratando de lograr ...

 function getTableAssignments(callbacks) { $.ajax({ method: "POST", datatype: "jsonp", url: base_url + "users/getTableAssignments/" + event_id }).done(function (data) { tables = data; if (callbacks.length > 0) { $.each(callbacks, function (i, v) { v(); }); } }); } getTableAssignments([func1(param1, param2), func2, func3(param3)]);
about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Almacenar los parámetros es el problema. Aquí se explica cómo almacenar las referencias a funciones:

 getTableAssignments([func1, func2, func3]);

Aquí se explica cómo vincular los parámetros a las funciones antes de la ejecución. Esto devuelve una nueva función. Hay otras formas de hacerlo, pero creo que esta sería la más sencilla.

 var boundFunc1 = func1.bind(null, param1, param2); var boundFunc3 = func3.bind(null, param3); getTableAssignments([boundFunc2, func2, boundFunc3]);

También puede almacenar sus parámetros en un objeto como matrices y buscar esos parámetros almacenados con el nombre de la función, pero eso parece complicado, por lo que no explicaré ese método (y requeriría que cambie la llamada para codificar la búsqueda Los parametros).

Si no has leído sobre bind, te recomiendo este video

about 4 years ago · Santiago Trujillo Report

0

Necesitas usar expresiones de función:

 getTableAssignments([ function() {func1(param1, param2); }, func2, function() {func3(param3); } ]);
about 4 years ago · Santiago Trujillo Report

0

Creo que las funciones de flecha serían una forma ingeniosa de hacer esto:

 function func1 (param) { console.log("func1 : " + param); } function func2 () { console.log("func2"); } function func3 (param1, param2) { console.log("func3 : " + param1 + ", " + param2); } function executeFunctions(funcs) { for (var i = 0, len = funcs.length; i < len; i++) { funcs[i](); } } favorateParam = "bob"; executeFunctions([ ()=>func1("dad"), ()=>func2(), ()=>func3("jane",favorateParam) ]);

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!