javascript timeout parameter merken

Gast #4798141
Lesenswert?

Hallo,

eigentlich möchte ich etwas ganz einfaches machen... aber irgendwie 
schaffs ich grad nicht

ich habe einen Timeout in Javascript realsiert... dieser sieht ETWA so 
aus:
1
var a = "testwert";
2
setTimeout(function(){
3
  console.log( a );
4
}, 10000 );

jetzt passiert folgendes,... den wert "a" nutzen einige weitere 
"Funktionen" und schleifen... ebenso gibt es verschiedene "dauer" wann 
die schleife abläuft...

also beschreibe ich in die variable z.B. "1" und starte meinen timeout 
auf 15 sekunden
dann schreibe ich in die variable "2" und starte meinen timeout mit 5 
sekunden...

okay, die 2. schleife gibt mit korrekt "2" zurück... die erste schleife 
merkt sich aber nicht "1" sondern nimmt "NATÜRLICH" den aktuell 
gesetzten wert, da dieser erst bei "bedarf" gelesen wird.

wie kann ich jetzt in das TIMEOUT die Variable so übergeben, dass dieser 
den stand verwendet wo das ganze gestartet wurde?

danke für jeden Tipp
Gast #4798173
Lesenswert?

geilo...

joa, war zu einfach :)

tausend dank, macht genau das was es soll

=> naja, es war schon in einer Funktion welche mit unterschiedlichen 
Parametern aufgerufen wurde...

aber wenn ich das time out in NOCHMAL eine Funktion ausgliedere führt er 
jedes time out für sich mit den gegebenen Parametern aus :)

danköööö
Gast #4798890
Lesenswert?

Hallo,

hallo, ich muss das ganze leider in C realisieren...

ich habe eine werteliste welche abgearbeitet werden muss... die ganze 
liste hat einen fest vorgegebenen timer...

also z.B. port1: [ 0, 1, 1, 0, 1 ] mit 100ms dann muss ich alle 100ms 
parameter für parameter abarbeiten...

allerdings soll nebenbei das "normale" program weiterarbeiten. Ebenso 
kann es sein, dass nebenbei mehrere parameter laufen also port2: [ 0, 1 
] 10000ms, hier ist die parametergruppe post1 evtl noch nicht fertig 
aber es startet parametergruppe 2

da ich verschiedene "unterprogramme" habe die parallel laufen sollen 
habe ich mir das in einen vorherigen foreneintrag abgeguckt...

ich habe also verschiedene counter welche zählen und sobald einer auf 
seinen wert ist, wird der befehl ausgefürt und der wert zurückgesetzt:
1
int cnt[4];
2
int prm[4] = { 20, 5, 3 16 };
3

4
while(1) {
5
   for( int i = 0; i < 4; i++ ) {
6
      cnt[i]++;
7
   }
8

9
   if( cnt[0] == prm[0] ) {
10
      cnt[0] = 0;
11
      //aufgabe 1 ausführen
12
   }
13

14
   //selbiges gilt auch für aufgabe 2...
15

16

17

18
   int tSleep = speed * 5 * 1000; // ca 5ms
19
   usleep( tSleep ); 
20
}
21

22
return 0;

ich weiß, dass ich hier keine genauen zeiten hinbekomme... das 
interessiert mich aber auch garnicht... ich habe für die Hardware ein 
paar zeiten einzuhalten (lesen von adc schreiben von gpio) und diese 
werde ich "großzügig" einhalten... ob da jetzt 50ms mehr oder weniger 
sind ist mir egal


ich weiß jetzt noch nicht exakt wie (da bin ich noch bei der findung) 
aber irgendwie werd ich jetzt von außen befehle Reinbringen (vermutlich 
habe ich eine SQLite Datenbank) und da wird dann eine schleife oder [das 
bekomm ich noch nicht so hin], die einzelnen zustände eingebracht.
=> es ist allerdings so, dass von außen der befehl zum startzeitpunkt, 
komplett vorliegt, aber er dann über die zeit abgearbeitet werden soll.

hat jemand einen tipp für mich?

in Javascript habe ich da einfach mit einer schleife einen Timeout 
gefüttert <- leider ist die js-lösung nicht stabil genug um ZUVERLÄSSIG 
alle Schaltzustände zu erreichen und da schwankt die zeit ZU SEHR...

bei C habe ich mehr als genug Leistungsreservern

kurzum... mir liegt ein array vor welches abgearbeitet werden soll...

ich habe sogar bereits eine "forschleife" welche alle schaltzustände 
durchläuft... allerdings durchläuft die forschleife innerhalb von ms 
(oder noch schneller) und ich brauche aber die vordefinierte zeit...
einen SLEEP kann ich nicht einbauen, weil sonst das programm steht :(

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren