en este caso no creo que setTimout sea la solucion ya que requieres que pase a la proxima instruccion por accion del usuario. asi de momento, lo que se me ocurre es una funcion que se encarga de invocar tus funciones, pero una a una. estas funciones estan almacenada en un array. en cada llamada de esta funcion se invoca una sola funcion del array y se elimina del array. no es la mejor forma de escribirlo pero si de ilustrarlo, por ejemplo:
Código:
var funciones = [function(){
// si tu funcion requiere parametros, creas funciones anonimas como en este ejemplo;
// y dentro de esa funcion haces la invocacion con los argumentos necesarios;
alert('primera funcion');
},
function(){
alert('segunda funcion');
},
function(){
alert('tercera y ultima funcion');
}
];
function caller(){
try{
funciones.shift()();
}catch(e){}
}
caller vendria siendo la funcion que debe invocarse cuando el usuario requiera pasar al proximo.