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?
-
@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.