Mi pare di capire che le due funzioni sono mutualmente escludentesi, quindi userei una sola variabile (io la chiamo flag), che:
- inizialmente e` a 0 (o -1);
- viene settata a 1 dalla chiamata alla funzione f1;
- viene settata a 2 dalla chiamata alla funzione f2;
- ...
Poi in ogni funzione fai partire il setTimeout SOLO se il flag e` corretto:
Nella funzione f1:
if(flag==1) setTimeout("f1('"+id+"',"+n_a1+")",40);
Nella funzione f2:
if(flag==2) setTimeout(...);
Vedi se questo va bene. In realta` ti porta un certo ritardo nella risposta, dato che la prima chiamata alla funzione sbagliata la fa comunque, prima di sospendere.
Altrimenti si puo` lavorare con il clrTimeout().
Ciao
Michele