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. [Gelöst] Ungewollter mehrfach Aufruf von schedule()

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    995

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    6.1k

[Gelöst] Ungewollter mehrfach Aufruf von schedule()

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 3 Kommentatoren 695 Aufrufe
  • Ä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.
  • P Offline
    P Offline
    pibroker
    schrieb am zuletzt editiert von
    #1

    Hallo, habe in der Suche nichts zum Thema gefunden.

    Wenn ich nachfolgendes Skript Aufrufe, wird im Log über 20 mal die Testausgabe "in Funktion f" ausgegeben.

    Also wird wohl auch die ganze Funktion zigmal aufgerufen.

    var cl_sched = null;
    
    function f() {
        clearSchedule(cl_sched);
        console.log("in Funktion f");
        cl_sched = schedule("*/1 * * * *", f);
    }
    
    cl_sched = schedule("*/1 * * * *", f);
    
    

    Was mache ich falsch?

    1 Antwort Letzte Antwort
    0
    • uweklattU Offline
      uweklattU Offline
      uweklatt
      schrieb am zuletzt editiert von
      #2

      Hallo,

      Du hast einen rekursiven Aufruf programmiert. Die Funktion ruft sich selbst auf…

      Ein einzelner Aufruf von schedule() ausserhalb der Funktion genügt.

      Innerhalb der Funktion sollte das dann nicht mehr erfolgen.

      Frohe Weihnachten!

      Tschau

      Uwe

      Intel i5/Proxmox/LXC/Docker/ioBroker

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pibroker
        schrieb am zuletzt editiert von
        #3

        Danke für die Antwort, das Skript ist nur ein Beispiel. Ich habe vor in der Funktion f() zu entscheiden ob ich ein weiteres Mal schedule() aufrufe oder nicht. Ist das grundsätzlich so nicht möglich?

        1 Antwort Letzte Antwort
        0
        • uweklattU Offline
          uweklattU Offline
          uweklatt
          schrieb am zuletzt editiert von
          #4

          Hallo pibroker,

          lass die Funktion doch im gewünschten Intervall dauernd laufen und bau dort die Bedingung ein.

          Nur wenn die Bedingung erfüllt ist, macht die Funktion etwas.

          Das ist letztendlich resourcenschonender, als ständiges Ein- und Ausschalten des Callbacks.

          Tschau

          Uwe

          Intel i5/Proxmox/LXC/Docker/ioBroker

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            pibroker
            schrieb am zuletzt editiert von
            #5

            @uweklatt:

            Hallo pibroker,

            lass die Funktion doch im gewünschten Intervall dauernd laufen und bau dort die Bedingung ein.

            Nur wenn die Bedingung erfüllt ist, macht die Funktion etwas.

            Das ist letztendlich resourcenschonender, als ständiges Ein- und Ausschalten des Callbacks.

            Tschau

            Uwe `
            Danke für die Hilfe. :)

            1 Antwort Letzte Antwort
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #6

              @pibroker:

              Was mache ich falsch? `
              Du missbrauchst einen Schedule wenn du ein Timeout verwenden könntest:

              function f() {
                  console.log("in Funktion f");
              
                  // Wenn die Funktion wieder aufgerufen werden soll
                  setTimeout(f, 60000); // 1 Minute-Intervall
              }
              
              setTimeout(f, 60000); // 1 Minute-Intervall
              // alternativ sofort:
              f();
              
              

              Oder eben einmalig einen Schedule starten und bei jedem Aufruf von f prüfen, ob eine Bedingung erfüllt ist.

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

              1 Antwort Letzte Antwort
              0

              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

              401

              Online

              33.0k

              Benutzer

              83.6k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              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