Node-Red:从自定义功能节点发送消息,不带输出选项

问题描述 投票:0回答:1

我想从没有输出选项的自定义函数节点发送消息来“触发”(如注入节点)另一个函数节点。我找到了一种使用 node.error("done", msg) 函数和一个类似于触发器的 catch 节点的解决方法,但我对此并不满意(我不喜欢对不是错误的内容使用 catch 错误...)并且在某些情况下不起作用。

事实上,在实际应用中,自定义函数节点会引发错误:

Error:  ServiceResult is BadInternalError (0x80020000) request was WriteRequest

就我而言,我认为通过修改全局变量值并拥有可以触发(注入)函数节点的事件侦听器可以更好地实现相同的结果。但是,如果不连续轮询全局变量来评估旧值直到它发生变化,我就无法找到解决方案,并且我担心潜在的性能影响。

请在下面找到带有捕获错误“解决方案”的流程的 JSON,以便更好地理解我的意思。

任何帮助将不胜感激,谢谢!

[{"id":"7aa9f6da.a3eeb8","type":"tab","label":"Test","disabled":false,"info":""},{"id":"a01ee6efcd61598c","type":"inject","z":"7aa9f6da.a3eeb8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":410,"y":200,"wires":[["b274d4f1a6a7668b"]]},{"id":"b274d4f1a6a7668b","type":"function","z":"7aa9f6da.a3eeb8","name":"","func":"node.error(\"test\", msg)","outputs":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":200,"wires":[]},{"id":"c3bdcbe7e28f6755","type":"catch","z":"7aa9f6da.a3eeb8","name":"","scope":["b274d4f1a6a7668b"],"uncaught":false,"x":390,"y":320,"wires":[["b03d81d80d8da749"]]},{"id":"b03d81d80d8da749","type":"function","z":"7aa9f6da.a3eeb8","name":"","func":"if (msg.error.message === \"test\") {\n    msg.payload = \"hello\"\n    return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":600,"y":320,"wires":[["e85eeaa9aa4f5c7a"]]},{"id":"e85eeaa9aa4f5c7a","type":"debug","z":"7aa9f6da.a3eeb8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":810,"y":320,"wires":[]}]

我尝试使用node.error()函数和catch节点,但这不是正确的解决方案。我正在尝试从另一个没有输出选项的自定义函数节点触发函数节点。

通过设置事件监听器来监视自定义函数节点中写入的全局变量值的更改,可以更好地实现相同的结果。但是,我担心如果需要连续轮询会对性能产生影响。

节点-红流图像

javascript event-handling node-red
1个回答
0
投票

简短的回答是你不知道。

如果您想要函数节点的输出,则需要将其连接到使用输出的节点。

© www.soinside.com 2019 - 2024. All rights reserved.