User1989: Mehrere Funktionen gleichzeitig oder hintereinander?

Hallo,
wenn ich in einer Funktion mehrere Funktionen aufrufe, also so:

function aufrufen)(){
funktion1();
funktion2();
funktion3();}

Werden die 3 aufgerufenen Funktionen hintereinander, oder gleichzeitig ausgeführt. Also wartet JavaScript darauf, dass funktion1 fertig berechnet wird und geht dann zu funktion2 über, oder wartet er nicht, dass funktion1 berechnet wird und ruft gleich die funktion2 auf?

  1. Hallo User1989,

    in diesem Fall werden die Funktionen der Reihe nach abgearbeitet.

    Gruß, Jürgen

  2. Hallo,

    wenn ich in einer Funktion mehrere Funktionen aufrufe, also so:

    function aufrufen)(){
    funktion1();
    funktion2();
    funktion3();}

    Werden die 3 aufgerufenen Funktionen hintereinander, oder gleichzeitig ausgeführt. Also wartet JavaScript darauf, dass funktion1 fertig berechnet wird und geht dann zu funktion2 über, oder wartet er nicht, dass funktion1 berechnet wird und ruft gleich die funktion2 auf?

    Die Funktionen selbst werden streng nacheinander aufgerufen.

    Wenn darin aber weitere Funktionen notiert sind, wenn sie setTimeout, setInterval verwenden oder sonstige asynchron und eventbasiert arbeiten, so kann es sein, dass Teile bspw. innerhalb von funktion2 erst nach funktion3 ausgeführt werden. Das kann man sich einfach veranschaulichen:

    function f1 () {  
      alert('f1');  
    }  
    function f2 () {  
      alert('f2');  
      setTimeout(function () {  
        alert('verschachtelte, verzögert aufgerufene Funktion in f2');  
      }, 1);  
    }  
    function f3 () {  
      alert('f3');  
    }  
      
    f1();  
    f2();  
    f3();
    

    Egal wie klein die Wartezeit bei setTimeout ist, die verschachtelte Funktion wird mit hunderprozentiger Sicherheit nach f3 aufgerufen. Man könnte auch setImmediate verwenden, was einer faktischen Wartezeit von 0 entspricht (setTimeout hat eine minimale Wartezeit von 10ms). Aber die Wartezeit ist hier wie gesagt nicht relevant.

    Das liegt daran, wie bei JavaScript Code ausgeführt wird: Es gibt nur einen Thread und dieser arbeitet eine sogenannte Event-Loop ab, in der auszuführender Code bzw. Funktionsaufrufe eingetragen werden. Erst wenn der gegenwärtige ausführende Code am Ende angelangt ist, also der Interpreter zur Ruhe kommt, nimmt er sich den nächsten anstehenden Aufruf vor und führt dessen Code aus.

    Mathias

  3. Mahlzeit User1989,

    Werden die 3 aufgerufenen Funktionen hintereinander,

    Ja.

    oder gleichzeitig ausgeführt.

    Nein.

    Also wartet JavaScript darauf, dass funktion1 fertig berechnet wird und geht dann zu funktion2 über,

    Ja.

    oder wartet er nicht, dass funktion1 berechnet wird und ruft gleich die funktion2 auf?

    Nein.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Mahlzeit User1989,

      Werden die 3 aufgerufenen Funktionen hintereinander,

      Ja.

      oder gleichzeitig ausgeführt.

      Nein.

      Also wartet JavaScript darauf, dass funktion1 fertig berechnet wird und geht dann zu funktion2 über,

      Ja.

      oder wartet er nicht, dass funktion1 berechnet wird und ruft gleich die funktion2 auf?

      Nein.

      MfG,
      EKKi

      Haha danke