NEWS
Direkt nach createState setState aufrufen
-
Guten Abend,
ich möchte in einem Script die DPs, falls nicht vorhanden, anlegen und dann befüllen.devices.forEach(function(device, index, arr){ createState(device.idVis, 0, false, StateDefault); initStates(device); //hier passieren einige Checks und in späteren Funktionsaufrufen das setState... });Beim ersten Aufruf (ohne erstellten State) bekomme ich ein paar Warnings (außer, ich stelle forceCreation auf true).
Eine Möglichkeit wäre ja die initStates als callback anzugeben, aber das verringert mmn. die Lesbarkeit.Woran liegt das? Ist zum Zeitpunkt von setState der aktualisierte Objektbaum noch nicht bekannt? Lässt sich das Aktualisieren erzwingen?
Oder gibt es eine andere Möglichkeit? [Timeout (1000ms) habe ich bereits erfolglos probiert...]
-
Guten Abend,
ich möchte in einem Script die DPs, falls nicht vorhanden, anlegen und dann befüllen.devices.forEach(function(device, index, arr){ createState(device.idVis, 0, false, StateDefault); initStates(device); //hier passieren einige Checks und in späteren Funktionsaufrufen das setState... });Beim ersten Aufruf (ohne erstellten State) bekomme ich ein paar Warnings (außer, ich stelle forceCreation auf true).
Eine Möglichkeit wäre ja die initStates als callback anzugeben, aber das verringert mmn. die Lesbarkeit.Woran liegt das? Ist zum Zeitpunkt von setState der aktualisierte Objektbaum noch nicht bekannt? Lässt sich das Aktualisieren erzwingen?
Oder gibt es eine andere Möglichkeit? [Timeout (1000ms) habe ich bereits erfolglos probiert...]
@manuxi sagte in Direkt nach createState setState aufrufen:
Guten Abend,
ich möchte in einem Script die DPs, falls nicht vorhanden, anlegen und dann befüllen.
Beim ersten Aufruf (ohne erstellten State) bekomme ich ein paar Warnings (außer, ich stelle forceCreation auf true).
Eine Möglichkeit wäre ja die initStates als callback anzugeben, aber das verringert mmn. die Lesbarkeit.Woran liegt das? Ist zum Zeitpunkt von setState der aktualisierte Objektbaum noch nicht bekannt? Lässt sich das Aktualisieren erzwingen?
Oder gibt es eine andere Möglichkeit? [Timeout (1000ms) habe ich bereits erfolglos probiert...]
async function main() { //hier kopierst du dein ganzes Skript rein for ( const device of devices) { try { await createStateAsync(device.idVis, 0, false, StateDefault); initStates(device); //hier passieren einige Checks und in späteren Funktionsaufrufen das setState... } catch(e) { // Fehler müssen abgefangen werden weil sonst der Nodejs Prozess neustartet. } }); } main()Das ist die einfachste Version - du kopierst dein Skript komplett in die Funktion und kannst dann await benutzen.
foreach würde ich dann aber nicht benutzen, weil das nötige async die funktionen in der Schleife ab dem await asychron laufen lassen würde.
-
@manuxi sagte in Direkt nach createState setState aufrufen:
Guten Abend,
ich möchte in einem Script die DPs, falls nicht vorhanden, anlegen und dann befüllen.
Beim ersten Aufruf (ohne erstellten State) bekomme ich ein paar Warnings (außer, ich stelle forceCreation auf true).
Eine Möglichkeit wäre ja die initStates als callback anzugeben, aber das verringert mmn. die Lesbarkeit.Woran liegt das? Ist zum Zeitpunkt von setState der aktualisierte Objektbaum noch nicht bekannt? Lässt sich das Aktualisieren erzwingen?
Oder gibt es eine andere Möglichkeit? [Timeout (1000ms) habe ich bereits erfolglos probiert...]
async function main() { //hier kopierst du dein ganzes Skript rein for ( const device of devices) { try { await createStateAsync(device.idVis, 0, false, StateDefault); initStates(device); //hier passieren einige Checks und in späteren Funktionsaufrufen das setState... } catch(e) { // Fehler müssen abgefangen werden weil sonst der Nodejs Prozess neustartet. } }); } main()Das ist die einfachste Version - du kopierst dein Skript komplett in die Funktion und kannst dann await benutzen.
foreach würde ich dann aber nicht benutzen, weil das nötige async die funktionen in der Schleife ab dem await asychron laufen lassen würde.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden