Forum: PC-Programmierung javascript timeout parameter merken


von Hans (Gast)


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

von Pfälzer Saumagen (Gast)


Lesenswert?

Mach ne Funktion drumrum, der übergibts du die entspr. Parameter.
Wobei aus deiner Prosa nicht genau zu entnehmen ist was du vor hast.

von Hans (Gast)


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öööö

von Hans (Gast)


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 :(

von Jim M. (turboj)


Lesenswert?

Hans schrieb:
> hat jemand einen tipp für mich?

Ja: Häng Deine Fragen nicht an Postings an, die mit Deinem Problem 
absolut nix gemeinsam haben. C != JavaScript.

von Hans (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.