Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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] Kann ein Callback nur einmal aufgerufen werden?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    912

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst] Kann ein Callback nur einmal aufgerufen werden?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 2 Kommentatoren 195 Aufrufe 2 Watching
  • Ä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.
  • Ben1983B Offline
    Ben1983B Offline
    Ben1983
    schrieb am zuletzt editiert von Ben1983
    #1

    Hallo, ich habe einen messageTo Aufruf wie folgt:

    messageTo("QAlexaLichtInGarageAus",data,{timeout: data.timeout},(dp)=>{
                    if(dp){
                        $(selector).setState(false);
                    } 
                });
    

    ist es jetzt richtig, dass ich den mitgesendeten callback nur genau 1 mal aufrufen kann?
    also ich kann diesen nicht bspw. so aufrufen:

    callback(false);
    setTimeout(()=>{
         callback(true);
    },2000);
    

    Beispiel 2.

    onMessage('testcallback', (data,callback) =>{
        callback("Aufruf");
            callback("zwei");
                callback("drei");
    });
    
    messageTo("testcallback",1,(dp)=>{
        log(dp)
    });
    

    Ausgabe im log... lediglich "Aufruf"

    T 1 Antwort Letzte Antwort
    0
    • Ben1983B Ben1983

      Hallo, ich habe einen messageTo Aufruf wie folgt:

      messageTo("QAlexaLichtInGarageAus",data,{timeout: data.timeout},(dp)=>{
                      if(dp){
                          $(selector).setState(false);
                      } 
                  });
      

      ist es jetzt richtig, dass ich den mitgesendeten callback nur genau 1 mal aufrufen kann?
      also ich kann diesen nicht bspw. so aufrufen:

      callback(false);
      setTimeout(()=>{
           callback(true);
      },2000);
      

      Beispiel 2.

      onMessage('testcallback', (data,callback) =>{
          callback("Aufruf");
              callback("zwei");
                  callback("drei");
      });
      
      messageTo("testcallback",1,(dp)=>{
          log(dp)
      });
      

      Ausgabe im log... lediglich "Aufruf"

      T Nicht stören
      T Nicht stören
      ticaki
      schrieb am zuletzt editiert von
      #2

      @ben1983
      hat mich interessiert, verhält sich bei mir genauso.

      onMessage('testcallback', (data,callback) =>{
          setTimeout(async function(callback) {
              const a = await callback("zwei");
              log(a)
              await callback("drei");
          }, 1000, callback)
      });
       
      messageTo("testcallback",1,calltest);
      
      async function calltest (a) {
          log(a)
          return 250
      }
      

      ergibt:

      22:25:49.067	info	javascript.0 (7123) script.js.Test.Skript_1: registered 0 subscriptions, 0 schedules, 1 message, 0 logs and 0 file subscriptions
      22:25:50.075	info	javascript.0 (7123) script.js.Test.Skript_1: undefined
      22:25:50.078	info	javascript.0 (7123) script.js.Test.Skript_1: zwei
      

      der Callback wird wohl erst ausgeführt wenn die Funktion beendet ist.

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      Ben1983B 1 Antwort Letzte Antwort
      0
      • T ticaki

        @ben1983
        hat mich interessiert, verhält sich bei mir genauso.

        onMessage('testcallback', (data,callback) =>{
            setTimeout(async function(callback) {
                const a = await callback("zwei");
                log(a)
                await callback("drei");
            }, 1000, callback)
        });
         
        messageTo("testcallback",1,calltest);
        
        async function calltest (a) {
            log(a)
            return 250
        }
        

        ergibt:

        22:25:49.067	info	javascript.0 (7123) script.js.Test.Skript_1: registered 0 subscriptions, 0 schedules, 1 message, 0 logs and 0 file subscriptions
        22:25:50.075	info	javascript.0 (7123) script.js.Test.Skript_1: undefined
        22:25:50.078	info	javascript.0 (7123) script.js.Test.Skript_1: zwei
        

        der Callback wird wohl erst ausgeführt wenn die Funktion beendet ist.

        Ben1983B Offline
        Ben1983B Offline
        Ben1983
        schrieb am zuletzt editiert von
        #3

        @ticaki ja ich habe ihn schon lange verzögert, aber irgendwie wird er nur einmal aufgerufen.
        Ist ja wie bei Dir, dass "drei" nicht aufgerufen wird.

        Ps. was bewirkt denn der Eintrag callback hinter den 1000 bei Dir? Das ist doch ein Parameter, der dem timeout übergeben wird, oder?

        T 1 Antwort Letzte Antwort
        0
        • Ben1983B Ben1983

          @ticaki ja ich habe ihn schon lange verzögert, aber irgendwie wird er nur einmal aufgerufen.
          Ist ja wie bei Dir, dass "drei" nicht aufgerufen wird.

          Ps. was bewirkt denn der Eintrag callback hinter den 1000 bei Dir? Das ist doch ein Parameter, der dem timeout übergeben wird, oder?

          T Nicht stören
          T Nicht stören
          ticaki
          schrieb am zuletzt editiert von ticaki
          #4

          @ben1983

          PS

          Ja, ich hatte die Hoffnung das die Callbackreferenz kopiert wird und mehrfach aufgerufen werden kann, aber nö. Ist schon etwas her das ich das verwendet hatte, war irgendwie nicht praktisch.

          was geht ist:

          onMessage('testcallback', (data,callback) =>{
              let result = [{f:'log', data:['erstes', 'zweites']}]
              callback(result)
          });
           
          messageTo("testcallback",1,(dp)=>{
              dp.forEach((dp) => dp.data.forEach((d) =>getFunction(dp.f)(d)))
          });
          
          function getFunction(id) {
              switch (id) {
                  case 'log':
                  return log
              }
          }
          

          Da muß man aber getFunction in jedes Skript kopieren, oder es global machen. Dat war mir zu "Das raff ich in 3 Jahren doch eh nicht mehr" und habs anders gemacht. Mit Stats mach ich laufend was und da muß ich mich eigentlich nie nochmal einlesen :)

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          Ben1983B 1 Antwort Letzte Antwort
          0
          • T ticaki

            @ben1983

            PS

            Ja, ich hatte die Hoffnung das die Callbackreferenz kopiert wird und mehrfach aufgerufen werden kann, aber nö. Ist schon etwas her das ich das verwendet hatte, war irgendwie nicht praktisch.

            was geht ist:

            onMessage('testcallback', (data,callback) =>{
                let result = [{f:'log', data:['erstes', 'zweites']}]
                callback(result)
            });
             
            messageTo("testcallback",1,(dp)=>{
                dp.forEach((dp) => dp.data.forEach((d) =>getFunction(dp.f)(d)))
            });
            
            function getFunction(id) {
                switch (id) {
                    case 'log':
                    return log
                }
            }
            

            Da muß man aber getFunction in jedes Skript kopieren, oder es global machen. Dat war mir zu "Das raff ich in 3 Jahren doch eh nicht mehr" und habs anders gemacht. Mit Stats mach ich laufend was und da muß ich mich eigentlich nie nochmal einlesen :)

            Ben1983B Offline
            Ben1983B Offline
            Ben1983
            schrieb am zuletzt editiert von
            #5

            @ticaki ja ich hatte es nur gemerkt, weil ich den Callback einmal aufgerufen hatte, dann hatte sich eien Bedingung geändert und ich hatte es so Programmiert, dass wenn die Bedingung sich ändert, der Callback nochmal mit anderen Paramtern aufgerufen wird.... das ging dann nicht.

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            697

            Online

            32.6k

            Benutzer

            82.2k

            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