Wie kann ich die sequentielle Ausführung von Javascript erzwingen?

Ich habe nur ziemlich komplizierte Antworten gefunden, die Klassen, Event-Handler und Rückrufe betrafen (was meiner Meinung nach eine Art Vorschlaghammer-Ansatz ist). Ich denke, Rückrufe können nützlich sein, aber ich kann sie nicht im einfachsten Kontext anwenden. Siehe dieses Beispiel:

<html>
  <head>
    <script type="text/javascript">
      function myfunction()  {
        longfunctionfirst();
        shortfunctionsecond();
      }

      function longfunctionfirst() {
        setTimeout('alert("first function finished");',3000);
      }

      function shortfunctionsecond() {
        setTimeout('alert("second function finished");',200);
      }
    </script>
  </head>
  <body>
    <a href="#" onclick="javascript:myfunction();return false;">Call my function</a>
  </body>
</html>

Dabei wird die zweite Funktion vor der ersten Funktion abgeschlossen. Was ist der einfachste Weg (oder gibt es einen?), die Ausführung der zweiten Funktion zu verzögern, bis die erste Funktion abgeschlossen ist?

---Bearbeiten---

Das war also ein Müllbeispiel, aber dank David Hedlund sehe ich bei diesem neuen Beispiel, dass es tatsächlich synchron ist (zusammen mit dem Absturz meines Browsers im Testprozess!):

<html>
<head>

<script type="text/javascript">
function myfunction() {
    longfunctionfirst();
    shortfunctionsecond();
}

function longfunctionfirst() {
    var j = 10000;
    for (var i=0; i<j; i++) {
        document.body.innerHTML += i;
    }
    alert("first function finished");
}

function shortfunctionsecond() {
    var j = 10;
    for (var i=0; i<j; i++) {
        document.body.innerHTML += i;
    }
    alert("second function finished");
}
</script>

</head>

<body>
  <a href="#" onclick="javascript:myfunction();return false;">Call my function</a>
</body>
</html>

Da mein IST-Problem bei jQuery und IE lag, muss ich eine separate Frage dazu stellen, wenn ich selbst nicht weiterkomme!

Antworten auf die Frage(10)

Ihre Antwort auf die Frage