Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Ungewollter mehrfach Aufruf von schedule()

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      pibroker last edited by

      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 Reply Last reply Reply Quote 0
      • uweklatt
        uweklatt last edited by

        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

        1 Reply Last reply Reply Quote 0
        • P
          pibroker last edited by

          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 Reply Last reply Reply Quote 0
          • uweklatt
            uweklatt last edited by

            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

            1 Reply Last reply Reply Quote 0
            • P
              pibroker last edited by

              @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 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                @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.

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                818
                Online

                31.9k
                Users

                80.2k
                Topics

                1.3m
                Posts

                3
                6
                554
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo