Es folgt also schematisch, mit [x] als Indikator für die jeweilige Thread-/Interpreterebene (exec folgt aus Funktionsaufruf, genThread folgt aus setTimeout):
exec fkt a()[0] -->
genThread t[1]-->
t[1] sleep x ms
exec fkt a()[2] -->
genThread t[2]-->
t[2] sleep x ms
exec fkt a()[n] -->
genThread t[n]-->
t[n] sleep x ms
exec fkt a()[n+1] -->
genThread t[n+1]-->...mache weiter mit exec a()[n]
mache weiter mit exec a()[2]
mache weiter mit exec a()[1]
mache weiter mit exec a()[0]
Ich kenne diese Art der schreibweise nicht, aber sie ist falsch. Das passiert nicht.
Die aufrufe von a()[>0 .. n] erfolgen nach macheweiter mit exec a().
Struppi.