NEWS
js callback asynchron problem
-
ich habe immer wieder probleme mit dem async und await - toll wäre es, wenn man so was wie mit dem type-script kurs für adapterentwickler machen würde - nur halt für dieses thema
-
@AlCalzone danke werd ich mal durcharbeiten
-
ich habe immer wieder probleme mit dem async und await - toll wäre es, wenn man so was wie mit dem type-script kurs für adapterentwickler machen würde - nur halt für dieses thema
@liv-in-sky sagte in js callback asynchron problem:
....wenn man so was wie mit dem type-script kurs für adapterentwickler machen würde....
gibt es dazu einen Link?
-
@liv-in-sky sagte in js callback asynchron problem:
....wenn man so was wie mit dem type-script kurs für adapterentwickler machen würde....
gibt es dazu einen Link?
-
@liv-in-sky cool, Danke!
-
Eventuell sind die neuen async-Funktionen in 4.8.x was für dich @hanss
https://forum.iobroker.net/topic/36999/neu-diverse-async-funktionen-im-javascript-adapterDamit lässt sich der Programmablauf trotz asynchronität schön steuern. Ich hab den obigen Schnipsel mal entsprechend umgebaut. Beachte das
asyncvor der Funktion undawait setStateAsync:async function raumzaehler() { var Raumctr = 0; // Schleife für jeden Raum ###################################### for (let i = 0; i < S_Raum.length; i++) { const element = S_Raum[i]; if (SollTemp_akt != Temp_FOA && SollTemp_akt != Temp_Abw) { await setStateAsync(Out_Root + D_Raum[index] + ".Man", SollTemp_akt, true); setRT(index, element, SollTemp_akt); // function setRT wg. Callback log("RaumzählerCB: " + Raumctr + " Index: " + RaumIndex); } else { setRT(index, element, SollTemp_akt); log("Raumzähler: " + Raumctr + " Index: " + RaumIndex); } } // Schleife für jeden Raum ###################################### // ########## Script soll hier fortfahren, wenn Schleife für jeden Raum durchlaufen ist. ########## log("Raumzähler nach allen Räumen: " + Raumctr + " Index: " + RaumIndex); } // Funktion aufrufen nicht vergessen! raumzaehler();Async und await machen aus asynchronen Funktionen wieder synchrone Funktionen.
Das will er ja nicht -
Async und await machen aus asynchronen Funktionen wieder synchrone Funktionen.
Das will er ja nichtHier mal ein kurzer Artikel, der auf einen Punkt eingeht, der die Funktionsweise der asynchronen Funktionen (callback oder auch promise basiert) erklärt
https://dev.to/steelvoltage/if-javascript-is-single-threaded-how-is-it-asynchronous-56gd
-
Async und await machen aus asynchronen Funktionen wieder synchrone Funktionen.
Das will er ja nicht@OliverIO
Vielen Dank, ich habe das jetzt so gelöst:In die Funktion setRT() einen Raumzähler und das Script eingefügt, wenn alle Räume durchlaufen sind:
Das ist sehr übersichtlich und nicht so kompliziert wie async und await.
Ich glaube, das kapier ich nicht mehr.setRT() { Raumctr++ //mein Script if (S_Raum.length == Raumctr){ // letzter Raum // Script hier, wenn alle Räume durchlaufen sind Raumctr=0 } } -
Async und await machen aus asynchronen Funktionen wieder synchrone Funktionen.
Das will er ja nicht -
@OliverIO wieso nicht? Wenn man etwas ausführen will, nachdem asynchrone Vorgänge durch sind, ist async/await genau das richtige Mittel.
Und IMO intuitiver als der callback Krempel. Nach dem Aufruf mit await ist es einfach fertig.@AlCalzone
Ah hatte einer seiner Antworten falsch interpretiert. Hab nochmal gelesen.
Wenn er mit seiner Lösung nun zufrieden ist, ist ja alles gut