Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sin título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
var global=false;
var j=0;
function f1(){
while(j<=1000){
document.getElementById("mostraJ").innerHTML=j;
j++;
}
global=true;
return global;
}
function f2(){
if (f1()){
document.getElementById("mostraI").innerHTML="Fin de F1, f2 puede seguir";
<!--resto de instrucciones de f2-->
}
}
</script>
</head>
<body>
<a href="#" onClick="f2()">Haz click</a><br />
J <span id="mostraJ"></span><br />
I <span id="mostraI"></span>
</body>
</html>
Tu problema es de sincronización, alert detiene la ejecución en realidad no esta actuando el while aun que lo parezca. Con f1 en la condición forzamos que F2 no siga hasta que tiene el resultado de F1, en el ejemplo siempre seguirá puesto que F1 siempre responde true pero podria programarse distinto de manera que el resultado de f1 dependa de su codigo. Y a su vez reprogramar f2 de manera que haga una cosa u otra en función del resultado de f1.
Quim