NEWS
onMessage aktuell auch ohne result async möglich?
- 
					
					
					
					
Hallo,
man konnte ja bei asynchronen Benutzen vononMessagemit
messageToAsync"nur" Objekte zurückgeben, die ein
resultattribut 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
onMessageUnregisterwird ja auch nur einnumberWert 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
errorAttribut und würde entsprechend einen Fehler werfen, welcher mit try/catch oder eben mit.catchbehandelt 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