Mantenga un registro de cuántas llamadas asincrónicas están pendientes. Cuando termine cada uno, disminuya su contador. Cuando llegas a 0, estás en la última devolución de llamada.
var asyncsLeft = 0;
for (var i=0;i<10;++i){
asyncsLeft++;
doSomethingAsyncWithCallback(function(){
// This should be called when each asynchronous item is complete
if (--asyncsLeft==0){
// This is the last one!
}
});
}
Debido a la naturaleza de un único subproceso de JavaScript no existe una posible condición de carrera en la que podría obtener su devolución de llamada se invoca antes de que todas las llamadas asíncronas se han hecho cola. Es seguro poner la llamada asyncsLeft++
después del doSomethingAsynchronous
, si lo desea.
Con jQuery se puede usar '.done()' 'o .then()' 'combinado con $ .cuando()': http : //stackoverflow.com/a/5817886/1095206 – BartekR
Muchas gracias. ¡Eso es algo que estaba buscando! –