Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Objektinstanz behalten / Singleton

    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

    Objektinstanz behalten / Singleton

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

      Hallo zusammen,

      ich würde gerne eine in einem Skript erstellte Objektinstanz (eine Queue) über Skriptausführungen hinweg behalten/weiterverwenden.

      Ist dies möglich? Wenn ja, wie - wo kann ich die Objektinstanz "ablegen"?

      Vielen Dank und viele Grüße
      synthe

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @synthe last edited by paul53

        @synthe Was verstehst Du unter Objektinstanz ? Man kann Objekte in Datenpunkte speichern (seit JS Version 4.x) , um sie weiter zu verwenden.

        S 1 Reply Last reply Reply Quote 0
        • S
          synthe @paul53 last edited by synthe

          Hallo @paul53 ich möchte eine nicht serialiserbare Objektinstanz irgendwo außerhalb des Skriptes (in einer globalen Variable, oder ähnlich) ablegen, um sie später - im gleichen, oder einen anderen Skript - wiederverwenden zu können.

          Vereinfacht und beispielhaft möchte ich folgendes machen:

          let myQueue;
          if(!(myQueue = globalObjects.get(‘meineInstanz’)))
          {
              myQueue = new Queue();
              globalObjects.put(‘meineInstanz’, myQueue);
          }
          
          myQueue.push(someAction);
          

          Vielen Dank und viele Grüße

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @synthe last edited by paul53

            @synthe
            Eine Queue kann man in Javascript als Array abbilden.

            @synthe sagte in Objektinstanz behalten / Singleton:

            außerhalb des Skriptes (in einer globalen Variable, oder ähnlich) ablegen, um sie später - im gleichen, oder einen anderen Skript - wiederverwenden zu können.

            Dafür dienen in ioBroker Datenpunkte, die mit setState(id, val, true) geschrieben und mit getState(id).val eingelesen werden können.

            S 1 Reply Last reply Reply Quote 0
            • S
              synthe @paul53 last edited by

              @paul53 Vielen Dank - ich werde das heute Abend mal versuchen! 🙂
              Zum Thema Queue: Ja, prinzipiell ist es ein Array, nur dass beim hinzufügen dinge in der richtigen Reihenfolge und synchron (das wird sicher problematisch) ausgeführt werden sollen...
              Mittlerweile bin ich doch am zweifeln, ob das in JS generell machbar ist, oder ob ich nicht über eine Lock-Datei - die periodisch abgefragt wird (oder ähnlich) - arbeiten muss. Noch habe ich Schwierigkeiten mich in die Grundprinzipien von JS hineinzudenken, was zugegebenermaßen gar nicht so viel mit Iobroker zu tun hat - wie mir langsam klar wird 🙂

              Asgothian 1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @synthe last edited by

                @synthe
                Hier muss ich Dir zustimmen. Alleine das Ablegen der Queue selber sorgt nicht für eine Synchrone Abarbeitung - dazu müsste sichergestellt sein das genau eine Instanz die Abarbeitung übernimmt, und andere Instanzen nur etwas hinzufügen können.

                Auch ist durch das Objekt-Modell vom IoBroker ein Hinzufügen von Queue Objekten kritisch - soweit ich das verstanden habe gibt es keine Funktionalität, die es erlaubt Schreibzugriffe auf einen Datenpunkt von anderen Stellen aus zu blockieren (zeitlich begrenzt, als "Resource Lock").

                Da wirst Du dir etwas anderes einfallen lassen müssen.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                533
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                3
                6
                308
                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