NEWS
[gelöst] Ausführreihenfolge bei Script-Start
-
Hallo,
ich bin eigentlich nicht neu in der Programmierung und kenne es so, das Code in der Reihenfolge ausgeführt wird, in der er dasteht.
var objetcs_in_room = getObject("enum.rooms.flur").common.members; var filtered_objects_in_room = objetcs_in_room.filter(function(id) { //console.log("teste " + id + ".ct"); var retval = false; getState(id + ".ct", function (err, result) { //console.log(result); if (result !== null) { console.log(result.val); retval = true; } }); return retval; }); console.log(objetcs_in_room); console.log(filtered_objects_in_room); filtered_objects_in_room.on(function(obj) { console.log("test mit filterarray"); console.log(JSON.stringify(obj), "warn"); });ich versuche hier alle objekte in einer gruppe zusammen zu suchen. das funktioniert. 'object_in_room' hat 5 elemente. danach möchte ich die elemente raussuchen, bei denen es eine farbtemperatur gibt - also die lampen. die ausgabe in zeile 17 zeigt mir dann aber ein leeres array an, zeile 19 wirft ein fehler, da die funktion 'on' nicht existiert und anschließend kommt die ausgabe aus zeile 9 drei mal. laut hilfe sind sowohl filter als auch getstate synchron nutzbar. dennoch wird erst alles andere ausgeführt und dann gefiltert. wo ist denn hier mein denkfehler?
-
Hallo,
ich bin eigentlich nicht neu in der Programmierung und kenne es so, das Code in der Reihenfolge ausgeführt wird, in der er dasteht.
var objetcs_in_room = getObject("enum.rooms.flur").common.members; var filtered_objects_in_room = objetcs_in_room.filter(function(id) { //console.log("teste " + id + ".ct"); var retval = false; getState(id + ".ct", function (err, result) { //console.log(result); if (result !== null) { console.log(result.val); retval = true; } }); return retval; }); console.log(objetcs_in_room); console.log(filtered_objects_in_room); filtered_objects_in_room.on(function(obj) { console.log("test mit filterarray"); console.log(JSON.stringify(obj), "warn"); });ich versuche hier alle objekte in einer gruppe zusammen zu suchen. das funktioniert. 'object_in_room' hat 5 elemente. danach möchte ich die elemente raussuchen, bei denen es eine farbtemperatur gibt - also die lampen. die ausgabe in zeile 17 zeigt mir dann aber ein leeres array an, zeile 19 wirft ein fehler, da die funktion 'on' nicht existiert und anschließend kommt die ausgabe aus zeile 9 drei mal. laut hilfe sind sowohl filter als auch getstate synchron nutzbar. dennoch wird erst alles andere ausgeführt und dann gefiltert. wo ist denn hier mein denkfehler?
@quatschmacher sagte:
getstate synchron nutzbar.
Du hast aber die asynchrone Variante gewählt. Prüfe besser mit existsState(id):
return existsState(id + ".ct");So funktioniert es aber nur, wenn in common.members das parent object der Datenpunkte enthalten ist.
@quatschmacher sagte in Ausführreihenfolge bei Script-Start:
zeile 19 wirft ein fehler, da die funktion 'on' nicht existiert
on(filtered_objects_in_room, function(obj) { -
@quatschmacher sagte:
getstate synchron nutzbar.
Du hast aber die asynchrone Variante gewählt. Prüfe besser mit existsState(id):
return existsState(id + ".ct");So funktioniert es aber nur, wenn in common.members das parent object der Datenpunkte enthalten ist.
@quatschmacher sagte in Ausführreihenfolge bei Script-Start:
zeile 19 wirft ein fehler, da die funktion 'on' nicht existiert
on(filtered_objects_in_room, function(obj) {@paul53 super. es kann manchmal so einfach sein. danke dir.
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