Hi Struppi!
Es ist mir an dieser Stelle offensichtlich nicht möglich, zu erklären, dass es unerheblich ist, wie eine aufgerufene Zwischenfunktion (hier: setTimeout()) funktioniert, solange gilt (kein gültiger Code, nur Pseudocode):
var count=0;
fkt a()
{
count++;
if (x=true)
setTimeout(ptr(a()),2000)
//und a() ist hier eben NICHT zwingend zuende:
alert("Ich bin die aktuell lebende Rekursionsinstanz: " + count);
count--;
}
fkt setTimeout(fktptr toA, sleepTime)
{
sleep sleepTime;
call toA; //ruft a() erneut auf
}
Man kann weder leugnen, dass die einzelnen Funktionsaufrufe
vor Bestätigung des alerts noch leben, noch, dass ein rekursiver Aufruf erfolgt - es werden immmer mehr alerts, und diese entstehen dadurch, dass a() sich selbst (über den Umweg setTimeout()) aufruft.
Die entstehenden alerts verdeutlichen übrigens die entstehende Kette...
Grüsse,
Richard