Esto también funcionaría.
$('#first').show(800);
setTimeout("$('#second').show(800)", 800);
setTimeout("$('#third').show(800)", 1600);
setTimeout("$('#forth').show(800)", 2400);
Sé que no es puramente secuencial, pero me parece que hace que sea fácil de leer y le permite configurar de animaciones con más flexability.
Nota: que debe citar el código que desea ejecutar. No he usado ninguna comilla doble en el código anterior pero si lo hiciera, las habría escapado de la siguiente manera.
$('#first').animate({"width":"100px"}, 500);
setTimeout("$('#second').animate({\"width\":\"100px\"}, 500)", 800);
setTimeout("$('#third').animate({\"width\":\"100px\"}, 500)", 1600);
setTimeout("$('#forth').animate({\"width\":\"100px\"}, 500)", 2400);
Por lo general, puede evitar esto al alternar las comillas que utiliza, pero aunque vale la pena mencionarlo.
ACTUALIZACIÓN: Aquí hay otra opción, y es también vale la pena mirar jQuery promete here
$('#first').show(800);
$('#second').delay(800).show(800);
$('#third').delay(1600).show(800);
$('#forth').delay(2400).show(800);
que realmente no necesitan esta cola, que acaba de hacer la organización de código 1000x mejor. No entiendo por qué no hay envoltorio para ninguna función en un $ (func) .joinUniversalQueue() similar; Wow .... eso es exactamente lo que quiero y sería una locura fácil escribir dicho método/complemento. Haré eso. – thirsty93
Pensándolo bien, $ .joinUniversalQueue (func); sería mucho más fácil – thirsty93