NEWS
[gelöst] Funktionsunterschied
-
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?
-
@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; }
-
@paul53 OK, danke