Ergebnis 1 bis 6 von 6
  1. #1
    stuKKa ist offline Grünschnabel
    registriert
    15-11-2010
    Beiträge
    6

    Question Javascript auf Funktion warten...

    Hi ^^
    Ich beschäftige mich seit ein paar Tagen mit Javascript nun wirft sich mir folgende Frage auf: Wie bringe ich Javascript dazu Function A aufzurufen -> warten bis Funktion A abgearbeitet ist und erst danach mit Funktion B fortzufahren?

    hier mal ein kleine Bsp:
    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>hmmm</title>
    
    <script type="text/javascript">
    <!--//
    function machwas()
    {
    	document.getElementById("textbox").innerHTML += "Funktion no01 gestartet!\n";
    		setTimeout(function() { _wait('01'); }, 600)
    	document.getElementById("textbox").innerHTML += "Funktion no02 gestartet!\n";
    		setTimeout(function() { _wait('02'); }, 500)
    	document.getElementById("textbox").innerHTML += "Funktion no03 gestartet!\n";
    		setTimeout(function() { _wait('03'); }, 400)
    	document.getElementById("textbox").innerHTML += "Funktion no04 gestartet!\n";
    		setTimeout(function() { _wait('04'); }, 300)
    	document.getElementById("textbox").innerHTML += "Funktion no05 gestartet!\n";
    		setTimeout(function() { _wait('05'); }, 200)
    }
    
    function _wait(text)
    {
    	document.getElementById("textbox").innerHTML += "Funktion no"+text+" abgeschlossen\n";
    }
    //-->
    </script>
    
    </head>
    
    <body>
    <a href="javascript:machwas();">START!</a><br /><br />
    Kontrollausgabe:<br />
    <textarea cols="100" rows="20" id="textbox"></textarea>
    
    </body>
    </html>
    In diesem Fall ruf ich ein und die selbe Funktion mehrmals nacheinander mit unterschiedlichen Verzögerungen auf...
    Daraus ergibt sich folgenden Ausgabe:
    Code:
    Funktion no01 gestartet!
    Funktion no02 gestartet!
    Funktion no03 gestartet!
    Funktion no04 gestartet!
    Funktion no05 gestartet!
    Funktion no05 abgeschlossen
    Funktion no04 abgeschlossen
    Funktion no03 abgeschlossen
    Funktion no02 abgeschlossen
    Funktion no01 abgeschlossen
    Wie bekomme ich es nun hin das die Funktionen nacheinander abgearbeitet werden?
    Ich möchte praktisch in diesem konkreten Beispiel folgende Ausgabe haben
    Code:
    Funktion no01 gestartet!
    Funktion no01 abgeschlossen
    Funktion no02 gestartet!
    Funktion no02 abgeschlossen
    Funktion no03 gestartet!
    Funktion no03 abgeschlossen
    Funktion no04 gestartet!
    Funktion no04 abgeschlossen
    Funktion no05 gestartet!
    Funktion no05 abgeschlossen
    Ich weiß das hier schonmal ähnliche Fragestellungen aufkamen aber ich hab diese Sache immer nur in Verbindung mit AJAX gefunden und das verwirrt mich dann doch etwas ^^'

    MfG
    stuKKa

  2. #2
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Javascript auf Funktion warten...

    JS Funktionen werden immer nacheinander abgearbeitet. Dein Problem ist, dass setTimeout nicht auf das Ende wartet, dass musst du in die Funktion einbauen, die nach dem Timeout aufgerufen wird.

  3. #3
    stuKKa ist offline Grünschnabel
    registriert
    15-11-2010
    Beiträge
    6

    AW: Javascript auf Funktion warten...

    hm so ganz hab ich das aber immer noch nicht raus oO
    Folgendes Szenario:
    Code:
    <script type="text/javascript">
    <!--//
    function a()
    {
    	b();
    	alert("nächster Schritt");
    }
    
    function b()
    {
    	img     = new Image();
    	img.src = "test.jpg";
    	if(!img.complete)
    	{
    		img.onload = function(){ alert("Bild fertig geladen"); }
    	}
    }
    //-->
    </script>
    Wenn ich nun die Funktion "a()" aufrufe wird richtiger weise sofort Funktion "b()" aufgerufen... allerdings wird mir in Funktion "a()" das alert ausgegeben bevor das onload-Event in der Funktion "b()" abgeschlossen wurde!
    Also ich hoffe ihr versteht was ich meine

    Also ich steh nun komplett auf dem Schlauch und weis auch nicht so recht was ich davon halten soll xD

    MfG
    stuKKa

  4. #4
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: Javascript auf Funktion warten...

    Wenn du etwas machen willst nachdem das Bild geladen ist dann schreib' das doch in's Event! Nennt sich asynchron!

  5. #5
    stuKKa ist offline Grünschnabel
    registriert
    15-11-2010
    Beiträge
    6

    AW: Javascript auf Funktion warten...

    Aber was ist wenn ich z.B. die Funktion b() mehrmals verwenden will um verschiedene Bilder vorzuladen und dann nach jedem Bild ein anderes Event ausgelöst werden soll...

    Klar könnt ich das alles verschachteln aber das wird dann bestimmt sehr unübersichtlich

    MfG
    stuKKa

  6. #6
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: Javascript auf Funktion warten...

    Code:
    function a()
    {
    	b("test.jpg", function() {
    		alert("test.jpg fertig!")
    	});
    	b("test2.jpg", function() {
    		alert("tes2.jpg fertig!")
    	});
    }
    
    function b(src, cb)
    {
    	img     = new Image();
    	img.src = src;
    	if(!img.complete)
    	{
    		img.onload = cb;
    	}
    }
    Du musst nicht einmal warten bis das eine Bild fertig geladen hat sondern dir wird einfach gesagt wenn ein's der Bilder fertig ist. Wenn du etwas hintereinander ausführen willst weil du z.B. einen Rückgabewert oder so brauchst dann musst du das verschachteln.
    Geändert von Junkee[] (15-11-2010 um 23:24 Uhr)

Ähnliche Themen

  1. Warten bis Ajaxx Funktion fertig ist
    Von DerNoir im Forum JavaScript
    Antworten: 20
    Letzter Beitrag: 22-07-2010, 16:33
  2. Warten auf anderen Funktion
    Von derfragende im Forum JavaScript
    Antworten: 30
    Letzter Beitrag: 26-11-2008, 15:27
  3. Antworten: 3
    Letzter Beitrag: 09-10-2008, 13:23
  4. Antworten: 1
    Letzter Beitrag: 28-03-2008, 17:33
  5. php mit der Ausführung einer Funktion warten
    Von Trojax im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 03-01-2006, 18:08

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •