即使使用' break' Javascript切换案例也会失败。

时间:2017-08-12 05:31:13

标签: javascript node.js firebase firebase-realtime-database switch-statement

我正在设置一个node.js discord bot,它使用firebase来存储用户的状态。我设置了一个switch语句来完成每个命令,到目前为止它一直运行良好。默认情况是:

default:
    message.reply("Unknown command type \"" + prefix + "help\" for a list of commands.")

然而,在实施firebase之后,我遇到了一个非常不寻常的bug。以下是使用"!检查"

检查其他用户状态的代码
case "check":
    firebase.database().ref('/users/' + msg.replace("!check ", "")).once('value').then(function(snapshot) {
        const status = snapshot.val().tagline;
        message.reply(message.author.username + "'s status is: " + status);
    });
    break; // <-- Break that isn't working

但是,虽然代码有效,但默认情况也会如下所示执行。discord image

我认为这可能与延迟从firebase检索用户的状态有关。默认情况首先出现的事实是一个很好的迹象。虽然我很困惑为什么延迟会导致中断被忽略。

1 个答案:

答案 0 :(得分:0)

在我的情况下,switch语句被调用了两次。如果机器人正在读取它自己的消息,则返回的代码失败。