Node-Red 的函数节点中是否可以嵌套 If 语句?
Are nested If-Statements possible in Node-Red's Function Node?
关于函数节点:在我看来,我不能在其他 If 或 Switch 中使用 If-Elif-Else 语句。
问题:If or Switch 可以嵌套吗?或者有没有更好的方法在 Nodered 中实现这样的事情?
示例:
switch (msg.payload.auto)
{
case "Manuell":
if (msg.payload.schattierung == "Ost")
{
var levelValue = "Schatten"
}
else if (msg.payload.schattierung == "Alle")
{
var levelValue = "Schatten"
}
else
{
var levelValue = "Offen"
}
case "Auto":
if (msg.payload.azimuth <= 225)
{
var levelValue = "Offen"
}
else if (msg.payload.azimuth < 235)
{
var levelValue = "Halb"
}
else
{
var levelValue = "Offen"
}
default:
var levelValue = "Offen"
}
var msgLevel = { payload: levelValue }
return msgLevel
嵌套 If 块或嵌套 Switch/If 块可以很好地工作,但您也可以使用开关节点和一组更改节点构建类似的东西来设置值。
需要注意的一点是,在功能节点中用新消息完全替换传入消息确实是低效且糟糕的形式。最好只替换现有的 msg.payload
。这也意味着任何使用 msg
对象上的其他键来保持状态的节点都可以继续正常工作(例如,http-response 节点需要由 http-in 节点创建的原始消息才能一直运行下流才能正常工作)
关于函数节点:在我看来,我不能在其他 If 或 Switch 中使用 If-Elif-Else 语句。
问题:If or Switch 可以嵌套吗?或者有没有更好的方法在 Nodered 中实现这样的事情?
示例:
switch (msg.payload.auto)
{
case "Manuell":
if (msg.payload.schattierung == "Ost")
{
var levelValue = "Schatten"
}
else if (msg.payload.schattierung == "Alle")
{
var levelValue = "Schatten"
}
else
{
var levelValue = "Offen"
}
case "Auto":
if (msg.payload.azimuth <= 225)
{
var levelValue = "Offen"
}
else if (msg.payload.azimuth < 235)
{
var levelValue = "Halb"
}
else
{
var levelValue = "Offen"
}
default:
var levelValue = "Offen"
}
var msgLevel = { payload: levelValue }
return msgLevel
嵌套 If 块或嵌套 Switch/If 块可以很好地工作,但您也可以使用开关节点和一组更改节点构建类似的东西来设置值。
需要注意的一点是,在功能节点中用新消息完全替换传入消息确实是低效且糟糕的形式。最好只替换现有的 msg.payload
。这也意味着任何使用 msg
对象上的其他键来保持状态的节点都可以继续正常工作(例如,http-response 节点需要由 http-in 节点创建的原始消息才能一直运行下流才能正常工作)