Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Funktionsunterschied

    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] Funktionsunterschied

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

      Hallo, ich habe eine Funktion, welche in ihrem Ursprung einfach nicht funktioniert.:

      function AddUsername(UserName)
      {
          if(getState(AktiveUser).val.indexOf(UserName) == -1)
          {
              setState(AktiveUser,getState(AktiveUser).val. + "," + UserName);
          }
          return getState(AktiveUser).val.;
      }
      

      Es wird immer der Ursprünglicher Wert von AktiveUser zurück gegeben.

      Schreibe ich Si eallerding so um, dann geht es:

      function AddUsername(UserName)
      {
          let MyUser = getState(AktiveUser).val;
          if(MyUser.indexOf(UserName) == -1)
          {
              MyUser = getState(AktiveUser).val + "," + UserName;
              setState(AktiveUser,MyUser);
          }
          return MyUser;
      }
      

      Woran liegt das?

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

        @ben1983 sagte: Woran liegt das?

        An der asynchronen Abarbeitung von setState(). Man kann nicht unmittelbar nach setState() den geänderten Wert einlesen, weil setState() zu dem Zeitpunkt noch nicht fertig ist.

        Weshalb zweimal getState() auf den gleichen Datenpunkt? Besser:

        function AddUsername(UserName) {
            let MyUser = getState(AktiveUser).val;
            if(MyUser.indexOf(UserName) == -1) {
                MyUser = MyUser + "," + UserName;
                setState(AktiveUser,MyUser);
            }
            return MyUser;
        }
        
        Ben1983 1 Reply Last reply Reply Quote 0
        • Ben1983
          Ben1983 @paul53 last edited by

          @paul53 OK, danke

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

          Support us

          ioBroker
          Community Adapters
          Donate

          819
          Online

          31.9k
          Users

          80.1k
          Topics

          1.3m
          Posts

          2
          3
          109
          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