一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情。
上一期我们讲到了Node-RED中公共节点的使用。接下来咱们继续看功能类的节点,该分类下有9个节点,分别是function, switch,change,range,template,delay,trigger,exec,rbe,这些节点可以对流进行不同的处理。
function(函数)
function
顾名思义,在function节点中我们可以编写函数,接收上一节点的msg,定义一个或多个输出值。
官方文档对函数的介绍比较详细,建议同学们去阅读一下:nodered.org/docs/user-g…
输入:
msg,上游节点的消息会通过msg参数传递
输出:
- 输出个数:可以输出一个参数,也可以输出多个参数,多个输出返回值类型为数组。
- 异步输出:使用
node.send()函数可以取代return来返回数据
结束标识:
mode.done():使用异步消息时,可以使用该函数来手动标识节点处理结束。
异常处理:
- 可以使用
node.warn();node.error()来抛出提示或异常
上下文:
除了返回msg消息外,函数还可以操作上下文数据。在函数中可以使用三个预定义的变量来访问上下文:
-
context- 节点的本地上下文
-
flow- 流范围上下文
-
global- 全局范围上下文
详细配置:
- 名称:配置节点名称
- SetUp:设置输出个数,这个与函数中return个数一致,输出设置为几在节点上就会显示几个连接点。
- 设置:部署节点后,此处添加的代码将运行一次。
- 函数:函数在此处定义
- 关闭:节点正在停止或重新部署时,将运行此处添加的代码
switch
根据判定规则,把流指向不同的分支。
输入:
msg、flow、global、表达式、环境变量
判定规则:
- 值规则
- 序列规则
- JSONata表达式
- 其他
详细配置:
- 名称:配置节点名称
- 属性:判定的参数值。
- 规则:判定规则
- 匹配方式:包括全选所有规则;接受第一条匹配消息后停止,类似于代码中的break
change
设置,更改,删除或移动消息、流上下文或全局上下文的属性。如果指定了多个规则,则将按定义的顺序来应用它们。
range
将数值映射为另一个区间的数值。
缩放并限制到目标范围表示结果永远不会超出目标范围内指定的范围。
在目标范围内缩放并折叠表示结果将会被限制(折叠)在目标范围内。
例如,输入0-10映射到0-100。
template
根据模板把消息进行重新组合
输入:
msg、flow、global
输出:
使用模板填充后的消息
delay
对节点的消息进行延迟发送或限制
delay
设置要应用于消息的延迟(以毫秒为单位)。仅当节点配置为允许消息去覆盖配置的默认延迟间隔时,此选项才适用。
reset
如果接收到的消息将此属性设置为任何值,则将清空该节点保留的所有的未发送消息。
flush
如果接收到的消息的此属性设置为任何值,则将立即发送该节点保留的所有未发送消息。
trigger
trigger节点触发后,将会发送一条消息。如果被拓展或重置,则可以选择发送第二条消息。
该节点可用于在流中创建一个超时。 默认情况下,当它收到一条消息时,它将发送一条带有1的有效荷载的消息。然后它将等待250毫秒,再发送第二条消息,其有效荷载为0。这可以用于使连接到Raspberry Pi GPIO引脚的LED闪烁等例子上。
exec
运行系统命令并返回其输出。
示例(function)
下载并导入代码中的“功能.json”可以查看完整示例