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

271
Views
Evento después de que se completen todas las llamadas ajax

Tengo un evento de clic que dispara 3 llamadas ajax:

 $("#button").click(function(e) { e.preventDefault(); $.ajax(call1); $.ajax(call2); $.ajax(call3); some_function() //should fire off AFTER all ajax calls are complete });

¿Hay alguna manera de confirmar que todas las llamadas ajax se han activado ANTES de activar mi función some_function() ?

¡Gracias por adelantado!

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puedes usar $.cuando

Proporciona una forma de ejecutar funciones de devolución de llamada basadas en uno o más objetos, generalmente objetos diferidos que representan eventos asincrónicos.

 $.when($.ajax(call1), $.ajax(call2), $.ajax(call3)) .done(function () { some_function(); });

Si (por alguna razón) tiene una serie de promesas, puede llamar a este método usando Function.prototype.apply() :

 $.when.apply($, ajaxArray) .done(function () { some_function(); });
over 4 years ago · Santiago Trujillo Report

0

Te sugiero que uses async: false y coloques $.ajax dentro de otro ajax, algo así...

 $.ajax({ async: false, // ... complete: function() { $.ajax({ // second ajax async: false, // ... complete: function() { $.ajax({ // second ajax async: false, // ... complete: function() { some_function(); } }); } }); } });
over 4 years ago · Santiago Trujillo Report

0

Depende si necesita respuestas exitosas, pero considere lo siguiente:

 $.ajax({ url: "http://some.url.example.com/endpoint", }) .always(function (data){ // Process the data $.ajax({ url: "http://some.url.example.com/endpoint2", }) .always(function (data2){ // Process the data $.ajax({ url: "http://some.url.example.com/endpoint3", }) .always(function (data) { someFunction(); }); }); });

Se puede leer mucho más sobre los objetos diferidos de jQuery y las promesas de ES6.

Si desea establecer un tiempo de espera y no le importa el resultado, establezca la opción de tiempo de espera `$.ajax({url: " http://some.url.example.com/endpoint ", timeout: 500})

O

Establezca una variable en cada uno y use window.setTimeout para verificar cuándo se configuraron todos, pero eso es horrible.

over 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!