Necesito llamar a un montón de funciones en estricto orden. También es muy importante que la siguiente función espere hasta que la anterior haya terminado.
En este momento estoy usando devoluciones de llamada encadenadas:
callMe1(function(){ callMe2(function(){ callMe3(function(){ callMeFinal(); }); }); });Esto funciona, pero parece ser un poco feo.
¿Alguna sugerencia para un enfoque diferente?
Puede implementar un sistema de "pila":
var calls = []; function executeNext(next) { if(calls.length == 0) return; var fnc = calls.pop(); fnc(); if(next) { executeNext(true); } } /*To call method chain synchronously*/ calls.push(callMe3); calls.push(callMe2); calls.push(callMe1); executeNext(true); /*To call method chain asynchronously*/ calls.push(callMe3); calls.push(function(){ callMe2(); executeNext(false); }); calls.push(function(){ callMe1(); executeNext(false); });No estoy seguro de si esto lo ayudaría, pero hay un gran artículo sobre el uso de diferidos en jQuery 1.5 . Podría limpiar un poco tu cadena...
Además, mi respuesta sobre ¿Puede alguien explicarme la cola de jQuery? tiene algunos ejemplos del uso de una cola para garantizar llamadas secuenciales.