尝试将这种逻辑实现为某种方法,但最终会弄乱javascript。其想法是将以下逻辑实现为代码。
function onMessageArrived(message) {
console.log('Message Recieved: Topic: ', message.destinationName, '. Payload: ', message.payloadString, '. QoS: ', message.qos);
// console.log(message);
var status = message.payloadString;
var indicator = message.destinationName;
当插入下面的逻辑时,一切都会变得混乱。我需要帮助才能看到问题。
/*This is the logic that messes up the code */
if(message.payloadString == "ON")
{
if(message.destinationName == /data/read/level)
{
// Turn Level Indicator Red
}
else if (message.destinationName == /data/read/nozzle)
{
// Turn Nozzle Indicator Red
}
}
else if(message.payloadString == "OFF")
{
if(message.destinationName == /data/read/level)
{
// Turn Level Indicator Green
}
else if (message.destinationName == /data/read/nozzle)
{
// Turn Nozzle Indicator Green}} }
答案 0 :(得分:0)
message.destinationName
是字符串,因此请将其用引号引起来。像第一个一样,它应该是"/data/read/level"
而不是/data/read/level
,对于其他人也一样。
答案 1 :(得分:0)
首先,您的语法有误,其次,根据您最终要检查的内容进行更正。我无法告诉您是要与插入的路径进行比较还是要与存储在这些路径导致的位置中的值进行比较。
如果您想查看对象是否等于您要提供的路径
if(message.destinationName == 'data/read/level'){...}
如果要查看对象是否等于要存储在该位置的值
if(message.destinationName == data.read.level){...}
您的console.log()
也有点差,要尝试显示数据,您可以像这样在console.log()
内创建一个对象
console.log({
topic: message.destinationName,
payload: message.payloadString,
qos: message.qos
});
它将像其他任何内容一样在控制台中呈现为常规数据对象,而不是尝试在每个结果之间并置字符串以尝试获得几乎相同的输出。希望这会有所帮助。