Intervall in JS -_-

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Soulpilot
User
Beiträge: 37
Registriert: Sonntag 24. April 2022, 12:19

Hallo,

ich weiß, ist eigentlich ein Python Forum, dennoch frage ich einfach hier, in der Hoffnung auf akkurate Hilfe, Sorry und Danke im Voraus!

Ich benötige ein Intervall, sodass eine Funktion quasi nur für einen gewissen Zeitraum ausgeführt wird. Wie heißt das im Fachjargon, unabhängig von der Sprache?
Benutzeravatar
pillmuncher
User
Beiträge: 1426
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Zeitintervall? Zeitraum? Time Interval? Duration?
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
__blackjack__
User
Beiträge: 10537
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Timeout oder Zeitüberschreitung wäre noch so ein Begriff aus dem Umfeld.
“»So computers are tools of the devil?« thought Newt. He had no problem believing it. Computers had to be the tools of *somebody*, and all he knew for certain was that it definitely wasn't him.” — Neil Gaiman & Terry Pratchett, Good Omens
Soulpilot
User
Beiträge: 37
Registriert: Sonntag 24. April 2022, 12:19

Ok, Intervall habe ich schon mal gehört im Zusammenhang mit JavaScript. Kurz recherchiert und dennoch eine Frage:

Code: Alles auswählen

setInterval(
aktiviere_xyz()
{
    xyz()
}, 1000);
Heißt die Funktion xyz, wird für 1000 ms aufgerufen? Meine Funktion xyz, sollte ein Boolean setzten können. Eine Variable soll für den Zeitraum des Intervalls einen Wert auf true oder false gesetzt bekommen... aber wie geht der Wert wieder zurück auf false, dazu muss ich mir nochmal Gedanken machen... Vielleicht noch ein kleiner Tipp, aber noch nicht das Resultat verraten, ich will es erst noch selber probieren :roll: :mrgreen:

Edit:
Dann vielleicht über eine Art Zustandsvergleich, ist das Intervall aktiv, wird die Var = true gesetzt, anschließend könnte ein zweites Intervall Var = false setzten ... mh irgendwie umständlich.
Sirius3
User
Beiträge: 16127
Registriert: Sonntag 21. Oktober 2012, 17:20

setInterval sorgt dafür, dass eine Funktion in regelmäßigen Abständen immer wieder aufgerufen wird. Es gibt keinen Mechanismus, der sagt, dass eine Funktion nur eine bestimmte Zeit laufen soll. Javascript ist auch Eventbasiert, das heißt, es darf keine Langlaufenden Funktionen geben, weil sonst die ganze Webseite einfriert. Wenn Du einen Wert nach einer bestimmten Zeit ändern willst, ist setTimeout das richtige.
Soulpilot
User
Beiträge: 37
Registriert: Sonntag 24. April 2022, 12:19

Aber setTimeout wird nur einmal beim Start des Skriptes ausgeführt, habe ich zumindest so gelesen, die Funktion soll ja in regelmäßigen Abständen ausgeführt werden. Was ich damit bezwecken will, ist, eine Art Rechtecksignal.
Benutzeravatar
__blackjack__
User
Beiträge: 10537
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Soulpilot: Na dann ist `setInterval()` richtig, aber Deine Formulierung der Frage sehr missverständlich, denn dann willst Du gar keine Funktion die einen gewissen Zeitraum ausgeführt wird, sondern eine die alle x Millisekunden kurz ausgeführt wird.
“»So computers are tools of the devil?« thought Newt. He had no problem believing it. Computers had to be the tools of *somebody*, and all he knew for certain was that it definitely wasn't him.” — Neil Gaiman & Terry Pratchett, Good Omens
Soulpilot
User
Beiträge: 37
Registriert: Sonntag 24. April 2022, 12:19

__blackjack__ hat geschrieben: Donnerstag 23. Juni 2022, 05:00 @Soulpilot: Na dann ist `setInterval()` richtig, aber Deine Formulierung der Frage sehr missverständlich, denn dann willst Du gar keine Funktion die einen gewissen Zeitraum ausgeführt wird, sondern eine die alle x Millisekunden kurz ausgeführt wird.
Danke und stimmt genau, das soll so realisiert werden. Sorry, ich stand selber etwas auf dem Schlauch^^

Ok, allerdings habe ich immer noch schwierigkeiten, da das signal so aussehen müsste: ____---____---____---____---____--- usw. also das Intervall true ist kürzer als das vom false state... Ist mir vorhin erst klar geworden das es vermutlich besser so ist, deswegen noch mals sorry für die Späte Info!

Wäre das mit einer sleep() Funktion möglich, in JS heißt das anders, müsste ich nachsehen, aber vom Prinzip her?

VG
Soulpilot
User
Beiträge: 37
Registriert: Sonntag 24. April 2022, 12:19

Ich komme erst heute Abend dazu das mal zu testen, aber würde es Sinn machen, in meinem Fall, eine Slepp und Intervall Funktion zu kombinieren oder geht das mit dem gewünschten Signal auch alleine mit Intervall?
Sirius3
User
Beiträge: 16127
Registriert: Sonntag 21. Oktober 2012, 17:20

Es gibt kein Sleep. Aber Du kannst ein setInterval mit einem setTimeout kombinieren.
Soulpilot
User
Beiträge: 37
Registriert: Sonntag 24. April 2022, 12:19

Sirius3 hat geschrieben: Donnerstag 23. Juni 2022, 07:20 Es gibt kein Sleep. Aber Du kannst ein setInterval mit einem setTimeout kombinieren.
Ah, jetzt verstehe ich, vielen Dank, ich probiere es und melde mich wieder :-)
Soulpilot
User
Beiträge: 37
Registriert: Sonntag 24. April 2022, 12:19

Ok, ich habe es gelöst, ziemlich easy, einfach verschachteln von timeout und intervall. Danke noch mals für Eure Tipps, hat mir geholfen!

LG
Antworten