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. JavaScript
  5. Problem mit Asynchronität

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Problem mit Asynchronität

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 3 Kommentatoren 600 Aufrufe 4 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.
  • ThisoftT Offline
    ThisoftT Offline
    Thisoft
    schrieb am zuletzt editiert von
    #1

    Habe mich an diesem sendTo synchron verwenden Post orientiert und damit aber noch ein Problem :-(

    Prinzipiell funktioniert ja dieses Promising auch bei mir ;-) aber warum nur einmal in meinem Konstrukt??

    async function HoleDaten(){
    var sqlstr = "SELECT * FROM xxx WHERE Feld = 1"
    try {
      const result = await sendToAsync('sql.0', 'query', sqlstr)
     console.log(result)
      // mit result weiterarbeiten
    } catch (e) {
      // Fehler behandeln
    }
    sqlstr = "SELECT * FROM xxx WHERE Feld = 999"
    try {
      const result = await sendToAsync('sql.0', 'query', sqlstr)
     console.log(result)
      // mit result weiterarbeiten
    } catch (e) {
      // Fehler behandeln
    }
    

    Die erste Logausgabe ist ein leeres result - die zweite ist dann korrekt.

    Was mach ich denn falsch bzw. was muss ich denn anders machen? Sorry, ich hab diese Asynchronität bzw. die Verrenkungen um die Abarbeitung der Befehle eben wieder "auf die Reihe" zu bekommen leider noch nicht verinnerlicht und tue mich auch schwer das nachzuvollziehen :-(

    22 HM-Geräte; PivCCU2 auf RasPi

    ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

    F 1 Antwort Letzte Antwort
    0
    • ThisoftT Thisoft

      Habe mich an diesem sendTo synchron verwenden Post orientiert und damit aber noch ein Problem :-(

      Prinzipiell funktioniert ja dieses Promising auch bei mir ;-) aber warum nur einmal in meinem Konstrukt??

      async function HoleDaten(){
      var sqlstr = "SELECT * FROM xxx WHERE Feld = 1"
      try {
        const result = await sendToAsync('sql.0', 'query', sqlstr)
       console.log(result)
        // mit result weiterarbeiten
      } catch (e) {
        // Fehler behandeln
      }
      sqlstr = "SELECT * FROM xxx WHERE Feld = 999"
      try {
        const result = await sendToAsync('sql.0', 'query', sqlstr)
       console.log(result)
        // mit result weiterarbeiten
      } catch (e) {
        // Fehler behandeln
      }
      

      Die erste Logausgabe ist ein leeres result - die zweite ist dann korrekt.

      Was mach ich denn falsch bzw. was muss ich denn anders machen? Sorry, ich hab diese Asynchronität bzw. die Verrenkungen um die Abarbeitung der Befehle eben wieder "auf die Reihe" zu bekommen leider noch nicht verinnerlicht und tue mich auch schwer das nachzuvollziehen :-(

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

      @thisoft hast du mal die Abfragen getauscht? hier funktioniert das genau so

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

      ThisoftT 1 Antwort Letzte Antwort
      0
      • F fastfoot

        @thisoft hast du mal die Abfragen getauscht? hier funktioniert das genau so

        ThisoftT Offline
        ThisoftT Offline
        Thisoft
        schrieb am zuletzt editiert von
        #3

        @fastfoot Oh nein - Du hast ja so Recht! Danke für's Brett vom Kopf schlagen ;-) Ich hatte ganz einfach einen Tippfehler in der WHERE-Klausel die im Original ein ganzes Stück komplexer ist als hier das Beispiel..:cold_sweat:

        22 HM-Geräte; PivCCU2 auf RasPi

        ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

        Great SUNG 1 Antwort Letzte Antwort
        0
        • ThisoftT Thisoft

          @fastfoot Oh nein - Du hast ja so Recht! Danke für's Brett vom Kopf schlagen ;-) Ich hatte ganz einfach einen Tippfehler in der WHERE-Klausel die im Original ein ganzes Stück komplexer ist als hier das Beispiel..:cold_sweat:

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

          @thisoft Auch komplexe SQLs kannst uns schicken, es findet sich sicher jemand, der das lesen kann und fixen. Ich hab zum Beispiel eine DB mit der Konfiguration gebaut, wann wer online darf und die Geräte noch Gruppen zugeordnet und so:

          select substr('00' || timeRule.timeRule_starthour, -2, 2) || ':' ||substr(timeRule.timeRule_startminute || '00', 1, 2) as startTime, substr('00' || timeRule.timeRule_endHour, -2, 2) || ':' || substr(timeRule.timeRule_endminute || '00', 1, 2) as endTime, timeRule_machineDeactivated as activeBlock, lanStation_timeRule.lanStation_timeRule_inactiveDate as ruleInactiveDate, lanStation_timeRule.lanStation_timeRule_inactiveUntilDateTime as ruleInactiveUntil, lanStation.lanStation_name as name, lanStation.lanStation_MAC as MAC, lanStation.lanStation_deactivated as blocked FROM lanStation LEFT OUTER JOIN lanStation_timeRule ON lanStation.lanStation_id = lanStation_timeRule.lanStation_id LEFT JOIN timeRule ON lanStation_timeRule.timeRule_id = timeRule.timeRule_id AND timeRule_weekDayList LIKE '%Mon%' WHERE (lanStation_timeRule.timeRule_id IS NULL AND blocked=1) OR (lanStation_timeRule.timeRule_id IS NOT NULL AND startTime IS NOT NULL);
          

          Ist ne Abfrage an eine SQLite3... Oder ist Dein SQL etwa noch komplexer? ;-)

          ThisoftT 1 Antwort Letzte Antwort
          0
          • Great SUNG Great SUN

            @thisoft Auch komplexe SQLs kannst uns schicken, es findet sich sicher jemand, der das lesen kann und fixen. Ich hab zum Beispiel eine DB mit der Konfiguration gebaut, wann wer online darf und die Geräte noch Gruppen zugeordnet und so:

            select substr('00' || timeRule.timeRule_starthour, -2, 2) || ':' ||substr(timeRule.timeRule_startminute || '00', 1, 2) as startTime, substr('00' || timeRule.timeRule_endHour, -2, 2) || ':' || substr(timeRule.timeRule_endminute || '00', 1, 2) as endTime, timeRule_machineDeactivated as activeBlock, lanStation_timeRule.lanStation_timeRule_inactiveDate as ruleInactiveDate, lanStation_timeRule.lanStation_timeRule_inactiveUntilDateTime as ruleInactiveUntil, lanStation.lanStation_name as name, lanStation.lanStation_MAC as MAC, lanStation.lanStation_deactivated as blocked FROM lanStation LEFT OUTER JOIN lanStation_timeRule ON lanStation.lanStation_id = lanStation_timeRule.lanStation_id LEFT JOIN timeRule ON lanStation_timeRule.timeRule_id = timeRule.timeRule_id AND timeRule_weekDayList LIKE '%Mon%' WHERE (lanStation_timeRule.timeRule_id IS NULL AND blocked=1) OR (lanStation_timeRule.timeRule_id IS NOT NULL AND startTime IS NOT NULL);
            

            Ist ne Abfrage an eine SQLite3... Oder ist Dein SQL etwa noch komplexer? ;-)

            ThisoftT Offline
            ThisoftT Offline
            Thisoft
            schrieb am zuletzt editiert von
            #5

            @great-sun Danke für Dein Angebot :-) Aber das Problem lag nicht in der Komplexität an sich sondern einfach darin dass ich durch einen Tippfehler in der WHERE-Klausel eine Bedingung gebaut hatte die eben keine Datensätze zurückgeben konnte. Und ich glaube, DAS hättest du auch nicht rausgefunden - oder weißt du was in meiner Datenbank steht? :-) :-)

            22 HM-Geräte; PivCCU2 auf RasPi

            ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

            1 Antwort Letzte Antwort
            0
            • Great SUNG Offline
              Great SUNG Offline
              Great SUN
              schrieb am zuletzt editiert von
              #6

              @thisoft Ach iwo... Es war ja auch nur nett gemeint und etwas witzig gedacht ;-)
              Manchmal ist es ein ! das zuviel oder zu wenig ist :D
              Das hatte ich heute auch schon lach

              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

              662

              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