Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. setTimeout und Skript-Neustart

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    188

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    201

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    886

setTimeout und Skript-Neustart

Geplant Angeheftet Gesperrt Verschoben JavaScript
7 Beiträge 4 Kommentatoren 462 Aufrufe 4 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Offline
    A Offline
    antimon
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich hätte mal eine Frage... was passiert eigentlich, wenn gerade bei den Skripten eine Funktion mit setTimeout() auf ihre Ausführung wartet und ich das Skript neu starte? Werden die laufenden Timer zurückgesetzt? Falls nein, gibt es irgendeine Möglichkeit, dies sauber durchzuführen?

    Ich habe das Gefühl, dass bei mir ständig beim Debuggen irgendwelche im Hintergrund laufende Timer reinpfuschen...

    Great SUNG 1 Antwort Letzte Antwort
    0
    • A antimon

      Hallo zusammen,

      ich hätte mal eine Frage... was passiert eigentlich, wenn gerade bei den Skripten eine Funktion mit setTimeout() auf ihre Ausführung wartet und ich das Skript neu starte? Werden die laufenden Timer zurückgesetzt? Falls nein, gibt es irgendeine Möglichkeit, dies sauber durchzuführen?

      Ich habe das Gefühl, dass bei mir ständig beim Debuggen irgendwelche im Hintergrund laufende Timer reinpfuschen...

      Great SUNG Offline
      Great SUNG Offline
      Great SUN
      schrieb am zuletzt editiert von
      #2

      @antimon Das kommt sicher auf den Kontext an, in dem Dein Timer läuft.
      Als Beisiel kannst Du aus einem Script heraus das Script selbst nicht neu starten, weil der Timer mit dem Beenden des Scripts auch weg ist.
      Du kannst aber ausserhalb des Scripts Timer haben, die auf Datenpunkte reagieren, die vom Script erzeugt wurden, oder die timeouts einfach anders verankern.

      So hab ich das bis jetzt zumindest immer wahrgenommen.

      Vielleicht kann ja @apollon77 mehr dazu sagen?!

      A 1 Antwort Letzte Antwort
      0
      • Great SUNG Great SUN

        @antimon Das kommt sicher auf den Kontext an, in dem Dein Timer läuft.
        Als Beisiel kannst Du aus einem Script heraus das Script selbst nicht neu starten, weil der Timer mit dem Beenden des Scripts auch weg ist.
        Du kannst aber ausserhalb des Scripts Timer haben, die auf Datenpunkte reagieren, die vom Script erzeugt wurden, oder die timeouts einfach anders verankern.

        So hab ich das bis jetzt zumindest immer wahrgenommen.

        Vielleicht kann ja @apollon77 mehr dazu sagen?!

        A Offline
        A Offline
        antimon
        schrieb am zuletzt editiert von
        #3

        @great-sun Danke für deine Antwort!
        Mir gehts gar nicht darum, dass irgendwelche Timer überleben sollen oder so - ganz im Gegenteil. Ich möchte beim Neustart des Skriptes (nicht der Instanz) keine verwaisten Timer übrig haben. Ich gehe mal davon aus, dass die automatisch bereinigt werden, aber ich kenne die Mechanismen dahinter nicht - out-of-the-Box ist es ja bei Javascript nicht möglich, alle Timer, die irgendwo existieren, abzufragen.

        Also was passiert zum Beispiel, wenn ich ein setTimeout(tueIrgendwas, 365 * 24 * 3600 * 1000); laufen lasse? Die Funktion tueIrgendwas wird theoretisch erst in einem Jahr aufgerufen. Jetzt speichere ich das Skript, weil ich was geändert habe - was passiert mit dem Timeout? Theoretisch darf der Code gar nicht mehr laufen, da sich das Skript ja verändert hat... aber bleibt da noch evtl. ein Rest im Speicher und führt zu irgendwelchen komischen Ergebnissen?

        Great SUNG 1 Antwort Letzte Antwort
        0
        • A antimon

          @great-sun Danke für deine Antwort!
          Mir gehts gar nicht darum, dass irgendwelche Timer überleben sollen oder so - ganz im Gegenteil. Ich möchte beim Neustart des Skriptes (nicht der Instanz) keine verwaisten Timer übrig haben. Ich gehe mal davon aus, dass die automatisch bereinigt werden, aber ich kenne die Mechanismen dahinter nicht - out-of-the-Box ist es ja bei Javascript nicht möglich, alle Timer, die irgendwo existieren, abzufragen.

          Also was passiert zum Beispiel, wenn ich ein setTimeout(tueIrgendwas, 365 * 24 * 3600 * 1000); laufen lasse? Die Funktion tueIrgendwas wird theoretisch erst in einem Jahr aufgerufen. Jetzt speichere ich das Skript, weil ich was geändert habe - was passiert mit dem Timeout? Theoretisch darf der Code gar nicht mehr laufen, da sich das Skript ja verändert hat... aber bleibt da noch evtl. ein Rest im Speicher und führt zu irgendwelchen komischen Ergebnissen?

          Great SUNG Offline
          Great SUNG Offline
          Great SUN
          schrieb am zuletzt editiert von
          #4

          @antimon Ich hab leider zu wenig Ahnung von den Tiefen bei js/node.js aber @apollon77 wird da sicher mehr zu sagen können.
          Wenn es wie bei Python etc. ist, sollten alle generierten Objekte automatisch wegfallen. 100% sicher bin ich nicht. Aber das lässt sich doch mit einem Test ganz einfach nachstellen... Ich bin jetzt nur leider schon weg vom Rechner, sonst hätte ich das kurz gemacht.

          1 Antwort Letzte Antwort
          0
          • apollon77A Offline
            apollon77A Offline
            apollon77
            schrieb am zuletzt editiert von
            #5

            Also generell gilt das Timer die per setTimeout gesetzt werden am Ende automatisch geglättet werden wenn das Skript stoppt.

            Problematisch sind ggf eher eigene Ressourcen wie ne selbst auf gemachte socket Verbindung oder so. Aber dafür gibts onStop wo du einen handler angeben kannst der bei dir aufräumt wenn das Skript gestoppt wird. Wenn du gaaaanz sicher sein willst (oder dem automatismus nicht traust ;-)) ) kannst du auch da selbst aufräumen.

            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
            A 1 Antwort Letzte Antwort
            0
            • apollon77A apollon77

              Also generell gilt das Timer die per setTimeout gesetzt werden am Ende automatisch geglättet werden wenn das Skript stoppt.

              Problematisch sind ggf eher eigene Ressourcen wie ne selbst auf gemachte socket Verbindung oder so. Aber dafür gibts onStop wo du einen handler angeben kannst der bei dir aufräumt wenn das Skript gestoppt wird. Wenn du gaaaanz sicher sein willst (oder dem automatismus nicht traust ;-)) ) kannst du auch da selbst aufräumen.

              A Offline
              A Offline
              antimon
              schrieb am zuletzt editiert von
              #6

              @apollon77 Das ist schon mal beruhigend, wenns da nen Automatismus gibt... :)
              Auf welchem Objekt kann man die onStop denn aufrufen bzw. registrieren?

              AlCalzoneA 1 Antwort Letzte Antwort
              0
              • A antimon

                @apollon77 Das ist schon mal beruhigend, wenns da nen Automatismus gibt... :)
                Auf welchem Objekt kann man die onStop denn aufrufen bzw. registrieren?

                AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                schrieb am zuletzt editiert von
                #7

                @antimon Das ist eine Funktion, die im Skript-Kontext global verfügbar ist.

                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                1 Antwort Letzte Antwort
                1

                Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                Registrieren Anmelden
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                500

                Online

                32.8k

                Benutzer

                82.7k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe