deterministische Funktionsaufrufe

DataFox

Erfahrenes Mitglied
Hey Leute! Folgendes Problem habe ich festgestellt: Die Funktionen werden alle "gleichzeitig" ausgeführt, anstatt hintereinander.

Hier ein Beispiel:

Code:
a();
b();
c();

a() setzt diverse Timeouts und braucht 5 Sekunden. Erst dann soll
Code:
b()
folgen, und erst danach
Code:
c()
.

JS wartet aber gar nicht erst bis
Code:
a()
fertig ist, sondern führt sofort
Code:
b()
aus, usw.

Gibt es einen Weg dieses Problem zu umgehen, damit die Funktionen deterministisch, also eine nach der anderen aufgerufen werden (und zwar erst, wenn a ihren Job erledigt hat, dann b, und dann c wenn b fertig ist)
 
Code:
function a() {
    alert('a');
    b();
}
function b() {
    alert('b');
    c();
}
function c() {
    alert('c');
}
a();
mfg mstup
 
Moin,

Anweisungen werden in JS standardmässig eine nach der anderen abgearbeitet.

Wenn du jedoch in a() einen timeout() startest, verlässt die darin notierte Anweisung den Geltungsbereich von a()
a() ist also nicht erst beendet, wenn der Timeout beendet ist, sondern bereits, wenn der Timeout gestartet wurde.

Du müsstest den Aufruf von b() und c() also im Anschluss an die Abarbeitung der Timeouts vornehmen, um die gewünschte Reihenfolge zu Erreichen.
Code:
function a(){alert('a');setTimeout('d()',5000);}
function b(){alert('b');}
function c(){alert('c');}
function d(){alert('d');b();c();}
a();
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück