Tema complicado
zyon, tema complicado.
Quizás con algún truco tipo...
Código PHP:
// escribir en el documento una ristra (x)html fuera de tiempo de ejecución.
function e(q,sinBR) {
var elDIV = document.createElement("DIV");
if(q==undefined) q="";
if(!sinBR) q+="<br/>";
elDIV.innerHTML = q;
for(var a=0; elDIV.childNodes.length>a; a++) {
document.body.appendChild( elDIV.childNodes[a].cloneNode(true) );
}
}
var finDeTardona = false, comprobador;
function tardona() {
e("Entro en tardona");
// .... cosas que tardan
// el setTimeout es sólo para simular que la ejecución de tardona() tarda 5 sgs
setTimeout( function() {
finDeTardona = true;
e("finDeTardona = true");
} , 5000);
}
function segundona() {
e("Entro en segundona!");
}
function principal() {
tardona();
// Sólo y sólo cuando acabe tardona (finDeTardona = true) ejecutaremos la segundona
// Comprobaremos si finDeTardona = true cada medio segundo, para ver si podemos lanzar la segundona
comprobador = setInterval( function() {
e("Comprobando: finDeTardona es "+finDeTardona);
if( finDeTardona == true ) {
finDeTardona = false; // reestablecemos
clearTimeout( comprobador ); // paramos de comprobar
segundona();
}
}, 500);
}
window.onload = principal;
Claro, que se podría hacer de una manera más global para llamar a cualquier función después de ejecutarla... pero supongo que llevaría más tiempo y más mente abstracta para implementarlo, depende cuales sean tus necesidades finales.
Un saludo.