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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] async/await auch im on() ?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

[gelöst] async/await auch im on() ?

Geplant Angeheftet Gesperrt Verschoben JavaScript
10 Beiträge 3 Kommentatoren 483 Aufrufe 3 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.
  • E Offline
    E Offline
    ente34
    schrieb am zuletzt editiert von ente34
    #1

    Ich beziehe mich auf diesen Post.
    Mein Frage, kann ich die Async-Funktionen auch im on() verwenden oder geht das (noch) nicht?

    F 1 Antwort Letzte Antwort
    0
    • E ente34

      Ich beziehe mich auf diesen Post.
      Mein Frage, kann ich die Async-Funktionen auch im on() verwenden oder geht das (noch) nicht?

      F Offline
      F Offline
      fastfoot
      schrieb am zuletzt editiert von
      #2

      @ente34 sagte in async/await auch im on() ?:

      Ich beziehe mich auf diesen Post.
      Mein Frage, kann ich die Async-Funktionen auch im on() verwenden oder geht das (noch) nicht?

      ja, hier ein etwas sinnfreies Beispiel

      const idState = '0_userdata.0.example_state';
      
      on(idState, async function(obj) {
          await wait(100);
          log(obj.state.val);
      })
      
      // oder
      
      on(idState, async (obj) => {
          await wait(100);
          log(obj.state.val);
      })
      
      

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      UncleSamU 1 Antwort Letzte Antwort
      0
      • F fastfoot

        @ente34 sagte in async/await auch im on() ?:

        Ich beziehe mich auf diesen Post.
        Mein Frage, kann ich die Async-Funktionen auch im on() verwenden oder geht das (noch) nicht?

        ja, hier ein etwas sinnfreies Beispiel

        const idState = '0_userdata.0.example_state';
        
        on(idState, async function(obj) {
            await wait(100);
            log(obj.state.val);
        })
        
        // oder
        
        on(idState, async (obj) => {
            await wait(100);
            log(obj.state.val);
        })
        
        
        UncleSamU Offline
        UncleSamU Offline
        UncleSam
        Developer
        schrieb am zuletzt editiert von UncleSam
        #3

        @fastfoot Einfach bedenken: du solltest immer den gesamten Inhalt der asynchronen Funktion, die du als Callback verwendest, in ein try ... catch schreiben, da eine Exception dort sonst zumindest das ganze Skript, wenn nicht den ganzen Adapter abstürzen lässt.

        Also sowas:

         
        on(idState, async (obj) => {
          try {
            await wait(100);
            log(obj.state.val);
          } catch (e) {
            log('Got an error: ' + e);
          }
        })
        

        Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
        ♡-lichen Dank an meine Sponsoren

        F E 2 Antworten Letzte Antwort
        1
        • E Offline
          E Offline
          ente34
          schrieb am zuletzt editiert von
          #4

          @unclesam @fastfoot
          Ahhhh - man muss das async nur an die richtige Stelle schreiben.
          Vielen Dank!!!!

          1 Antwort Letzte Antwort
          0
          • UncleSamU UncleSam

            @fastfoot Einfach bedenken: du solltest immer den gesamten Inhalt der asynchronen Funktion, die du als Callback verwendest, in ein try ... catch schreiben, da eine Exception dort sonst zumindest das ganze Skript, wenn nicht den ganzen Adapter abstürzen lässt.

            Also sowas:

             
            on(idState, async (obj) => {
              try {
                await wait(100);
                log(obj.state.val);
              } catch (e) {
                log('Got an error: ' + e);
              }
            })
            
            F Offline
            F Offline
            fastfoot
            schrieb am zuletzt editiert von fastfoot
            #5

            @unclesam sagte in async/await auch im on() ?:

            @fastfoot Einfach bedenken: du solltest immer den gesamten Inhalt der asynchronen Funktion, die du als Callback verwendest, in ein try ... catch schreiben, da eine Exception dort sonst zumindest das ganze Skript, wenn nicht den ganzen Adapter abstürzen lässt.

            Also sowas:

             
            on(idState, async (obj) => {
              try {
                await wait(100);
                log(obj.state.val);
              } catch (e) {
                log('Got an error: ' + e);
              }
            })
            

            mhhmm, vielen Dank für den Hinweis! Aber würde/sollte man das tatsächlich auch in einem so einfachen Beispiel machen? Ich hätte eher gedacht dass man das macht wenn man ein JSON.parse() oder ähnliches anwendet. Und weil ich es gerne genau wissen möchte, gilt das dann auch für 'normale' callbacks ohne async, also on(id,(obj)=>{}) ? Bisher habe ich mir das immer erspart, zumindest wenn ich keinen Fehler erwartet habe, so wie im Beispiel. Aber ich lerne gerne dazu und bin deshalb für solche Hinweise sehr dankbar

            iobroker läuft unter Docker auf QNAP TS-451+
            SkriptRecovery: https://forum.iobroker.net/post/930558

            UncleSamU 1 Antwort Letzte Antwort
            0
            • UncleSamU UncleSam

              @fastfoot Einfach bedenken: du solltest immer den gesamten Inhalt der asynchronen Funktion, die du als Callback verwendest, in ein try ... catch schreiben, da eine Exception dort sonst zumindest das ganze Skript, wenn nicht den ganzen Adapter abstürzen lässt.

              Also sowas:

               
              on(idState, async (obj) => {
                try {
                  await wait(100);
                  log(obj.state.val);
                } catch (e) {
                  log('Got an error: ' + e);
                }
              })
              
              E Offline
              E Offline
              ente34
              schrieb am zuletzt editiert von
              #6

              @unclesam
              Das mit der Fehlerbehandlung stimmt, ohne reisst es den ganzen adapter runter, schon ausprobiert ...:blush:

              1 Antwort Letzte Antwort
              0
              • F fastfoot

                @unclesam sagte in async/await auch im on() ?:

                @fastfoot Einfach bedenken: du solltest immer den gesamten Inhalt der asynchronen Funktion, die du als Callback verwendest, in ein try ... catch schreiben, da eine Exception dort sonst zumindest das ganze Skript, wenn nicht den ganzen Adapter abstürzen lässt.

                Also sowas:

                 
                on(idState, async (obj) => {
                  try {
                    await wait(100);
                    log(obj.state.val);
                  } catch (e) {
                    log('Got an error: ' + e);
                  }
                })
                

                mhhmm, vielen Dank für den Hinweis! Aber würde/sollte man das tatsächlich auch in einem so einfachen Beispiel machen? Ich hätte eher gedacht dass man das macht wenn man ein JSON.parse() oder ähnliches anwendet. Und weil ich es gerne genau wissen möchte, gilt das dann auch für 'normale' callbacks ohne async, also on(id,(obj)=>{}) ? Bisher habe ich mir das immer erspart, zumindest wenn ich keinen Fehler erwartet habe, so wie im Beispiel. Aber ich lerne gerne dazu und bin deshalb für solche Hinweise sehr dankbar

                UncleSamU Offline
                UncleSamU Offline
                UncleSam
                Developer
                schrieb am zuletzt editiert von
                #7

                @fastfoot sagte in [gelöst] async/await auch im on() ?:

                Aber würde/sollte man das tatsächlich auch in einem so einfachen Beispiel machen?

                Nein, natürlich nicht für ein "log", aber meistens macht man ja mehr als nur das in einem on-Handler. Und @ente34 schreibt es oben ja schon: es lohnt sich, immer ein try...catch rein zu tun.

                Und weil ich es gerne genau wissen möchte, gilt das dann auch für 'normale' callbacks ohne async, also on(id,(obj)=>{}) ?

                Ja, da ist es tatsächlich kein Problem da diese Exception abgefangen und geloggt wird. Aber eine "unhandled promise rejection", wie das heisst, kann leider nicht abgefangen werden.

                Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
                ♡-lichen Dank an meine Sponsoren

                F 1 Antwort Letzte Antwort
                1
                • UncleSamU UncleSam

                  @fastfoot sagte in [gelöst] async/await auch im on() ?:

                  Aber würde/sollte man das tatsächlich auch in einem so einfachen Beispiel machen?

                  Nein, natürlich nicht für ein "log", aber meistens macht man ja mehr als nur das in einem on-Handler. Und @ente34 schreibt es oben ja schon: es lohnt sich, immer ein try...catch rein zu tun.

                  Und weil ich es gerne genau wissen möchte, gilt das dann auch für 'normale' callbacks ohne async, also on(id,(obj)=>{}) ?

                  Ja, da ist es tatsächlich kein Problem da diese Exception abgefangen und geloggt wird. Aber eine "unhandled promise rejection", wie das heisst, kann leider nicht abgefangen werden.

                  F Offline
                  F Offline
                  fastfoot
                  schrieb am zuletzt editiert von
                  #8

                  @unclesam sagte in [gelöst] async/await auch im on() ?:

                  Nein, natürlich nicht für ein "log", aber meistens macht man ja mehr als nur das in einem on-Handler.

                  ah, dann hatte ich deinen Tipp schon richtig eingeordnet

                  Und @ente34 schreibt es oben ja schon: es lohnt sich, immer ein try...catch rein zu tun.

                  ja, Fehlerbehandlung wird gerne vernachlässigt, auch von mir :-( Meist baue ich sie erst ein, wenn ein Fehler schon eingetreten war und ich so darauf aufmerksam wurde. Da ist sicher noch Luft nach oben, Beiträge wie deiner helfen da sehr!

                  Und weil ich es gerne genau wissen möchte, gilt das dann auch für 'normale' callbacks ohne async, also on(id,(obj)=>{}) ?

                  Ja, da ist es tatsächlich kein Problem da diese Exception abgefangen und geloggt wird. Aber eine "unhandled promise rejection", wie das heisst, kann leider nicht abgefangen werden.

                  vor Grundlagen zu Promises habe ich mich bisher 'gedrückt', auch weil deren Handling durch die neuen iobroker xyzAsync Funktionen super easy scheint und auch ist. JS ist schon nicht einfach, ich sollte doch noch etwas erweiterte Grundlagen lernen

                  Nochmals Danke für deine Erläuterungen!

                  iobroker läuft unter Docker auf QNAP TS-451+
                  SkriptRecovery: https://forum.iobroker.net/post/930558

                  UncleSamU 1 Antwort Letzte Antwort
                  0
                  • F fastfoot

                    @unclesam sagte in [gelöst] async/await auch im on() ?:

                    Nein, natürlich nicht für ein "log", aber meistens macht man ja mehr als nur das in einem on-Handler.

                    ah, dann hatte ich deinen Tipp schon richtig eingeordnet

                    Und @ente34 schreibt es oben ja schon: es lohnt sich, immer ein try...catch rein zu tun.

                    ja, Fehlerbehandlung wird gerne vernachlässigt, auch von mir :-( Meist baue ich sie erst ein, wenn ein Fehler schon eingetreten war und ich so darauf aufmerksam wurde. Da ist sicher noch Luft nach oben, Beiträge wie deiner helfen da sehr!

                    Und weil ich es gerne genau wissen möchte, gilt das dann auch für 'normale' callbacks ohne async, also on(id,(obj)=>{}) ?

                    Ja, da ist es tatsächlich kein Problem da diese Exception abgefangen und geloggt wird. Aber eine "unhandled promise rejection", wie das heisst, kann leider nicht abgefangen werden.

                    vor Grundlagen zu Promises habe ich mich bisher 'gedrückt', auch weil deren Handling durch die neuen iobroker xyzAsync Funktionen super easy scheint und auch ist. JS ist schon nicht einfach, ich sollte doch noch etwas erweiterte Grundlagen lernen

                    Nochmals Danke für deine Erläuterungen!

                    UncleSamU Offline
                    UncleSamU Offline
                    UncleSam
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    @fastfoot sagte in [gelöst] async/await auch im on() ?:

                    vor Grundlagen zu Promises habe ich mich bisher 'gedrückt', auch weil deren Handling durch die neuen iobroker xyzAsync Funktionen super easy scheint und auch ist. JS ist schon nicht einfach, ich sollte doch noch etwas erweiterte Grundlagen lernen

                    Schau dir diese gute Erklärung von unserem AlCalzone mal an:
                    https://gist.github.com/AlCalzone/d14b854b69ce5e8a03718336cc650a95

                    Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
                    ♡-lichen Dank an meine Sponsoren

                    F 1 Antwort Letzte Antwort
                    1
                    • UncleSamU UncleSam

                      @fastfoot sagte in [gelöst] async/await auch im on() ?:

                      vor Grundlagen zu Promises habe ich mich bisher 'gedrückt', auch weil deren Handling durch die neuen iobroker xyzAsync Funktionen super easy scheint und auch ist. JS ist schon nicht einfach, ich sollte doch noch etwas erweiterte Grundlagen lernen

                      Schau dir diese gute Erklärung von unserem AlCalzone mal an:
                      https://gist.github.com/AlCalzone/d14b854b69ce5e8a03718336cc650a95

                      F Offline
                      F Offline
                      fastfoot
                      schrieb am zuletzt editiert von
                      #10

                      @unclesam sagte in [gelöst] async/await auch im on() ?:

                      Schau dir diese gute Erklärung von unserem AlCalzone mal an:

                      Danke dir, die kannte ich schon und habe sie jetzt schon zwei- dreimal durch, aber lerne jedes mal etwas. Evtl. sollte ich die Beispiele mal mit konkretem Code beleben, so lerne ich halt am Besten. Gegen Ende schwirrt mir immer der Kopf :-) Verstanden habe ich es, aber um das zu verinnerlichen muss ich noch viel programmieren und üben

                      iobroker läuft unter Docker auf QNAP TS-451+
                      SkriptRecovery: https://forum.iobroker.net/post/930558

                      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

                      421

                      Online

                      32.4k

                      Benutzer

                      81.4k

                      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