NEWS
onMessage aktuell auch ohne result async möglich?
-
Hallo,
man konnte ja bei asynchronen Benutzen vononMessage
mit
messageToAsync
"nur" Objekte zurückgeben, die ein
result
attribut enthalten haben.
Eben habe ich es mal versucht und ich konnte über
callback(myNumber);
auch einfach irgendeinen Wert zurücksenden.
@haus-automatisierung ist das seit einer bestimmten Version möglich?
-
@ben1983 Müsste ich mir im Code anschauen warum das geht und in welchen Situationen. Am besten an die Doku halten und nicht hoffen, dass das immer klappt
-
@haus-automatisierung hatte nichts gefunden, dass es auf jeden Fall result geben muss.
Hatte es noch im Hinterkopf, aber dachte ich Versuch es mal.
Oder gibt’s ne Stelle, wo steht, dass es result geben MUSS?Also das:
onMessage('myTestMessage',async (data,callback)=>{ callback("OK"); }); log(JSON.stringify(await messageToAsync('myTestMessage')));
Liefert mir den Log:
javascript.0 07:13:12.354 info script.js.___Funktionstests.MessagAsync: "OK"
-
@ben1983 sagte in onMessage aktuell auch ohne result async möglich?:
hatte nichts gefunden, dass es auf jeden Fall result geben muss.
https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#onmessage
Wo steht das Gegenteil? Aber ja, im Beispiel zu
onMessageUnregister
wird ja auch nur einnumber
Wert an die Callback-Funktion gegeben. Müsste ich mir im Detail anschauen wie gesagt.Ich halte mich immer an das Standard-Konzept von sendTo.
-
@ben1983 Gerade die Funktion mit Promise schaut ja nach dem
error
Attribut und würde entsprechend einen Fehler werfen, welcher mit try/catch oder eben mit.catch
behandelt werden kann. Das würde dir ja dann verloren gehen.onMessage('myTestMessage', (data, callback) => { callback({ result: data.bla, error: 'das hat nicht geklappt' }); }); // Callback messageTo('myTestMessage', { bla: 1234 }, (data) => { if (!data.error) { console.info(data.result); } else { console.error(data.error); } }); // Promise messageToAsync('myTestMessage', { bla: 1234 }) .catch((reason) => { console.error(reason) });
-
@haus-automatisierung OK.
Also besser immer mit{error: irgendwas....}
oder
{result: irgendwas....}
arbeiten, richtig?
Aber solange es keinen error gibt, darf auch das attribut nicht vorkommen, oder müsste false sein, oder?
-
@ben1983 Kannst auch null setzen