Javascript 等待设置数量的if语句继续
我相信一个案例在这里是有效的,并且可能每次都会通过这个案例。基本上,我希望在爆发之前先执行5个命令(除非我执行另一个命令强制它爆发) 它使用node.js和socket.io在index.html页面上使用socket/io.emits 以下是我目前在节点文件中的内容: 我希望它遵循以下模式:Javascript 等待设置数量的if语句继续,javascript,node.js,Javascript,Node.js,我相信一个案例在这里是有效的,并且可能每次都会通过这个案例。基本上,我希望在爆发之前先执行5个命令(除非我执行另一个命令强制它爆发) 它使用node.js和socket.io在index.html页面上使用socket/io.emits 以下是我目前在节点文件中的内容: 我希望它遵循以下模式: 我执行!ff“名称” 他们打字!回答“回答” 答案的状态保持在之前留下的状态,因此其他人可以在稍后的时间提取它。它存储在变量answerState中,但在index.html页面中发生了更改,因为我一直在
//Commands
//Define answerState as a global
var answerState = 0;
//Define your original function as a variable to insert as an argument to
//client.addListener() and pass the answerState argument to it
var answerQuestion = function (channel, user, message, answerState) {
console.log(user.username + ': ' + message);
var msg = message;
if (msg.toLowerCase().indexOf("!ff") == 0) {
var parts = msg.split(" ");
if(parts.length > 1) {
parts.shift();
var player = parts.join(" ");
client.say(channel, player + " wants to play Family Fortunes!");
}
if (answerState < 5) {
if (msg.toLowerCase().indexOf("!answer") == 0) {
var parts = msg.split(" ");
if(parts.length > 1) {
parts.shift();
var answer = parts.join(" ");
io.emit('answer',{player, answer});
console.log('Going over to index.html | io.emit "answerState" ');
//if answer is correct break out of function
if (answer === correct) {
answerState = 0;
return;
}
//call the function recursively until answerState = 5
else {
answerQuestion(channel, user, message, answerState++);
}
}
}
}
}
}
//add your listener and insert answerQuestion as the argument with answerState
client.addListener('chat', answerQuestion(channel, user, message, answerState));
//命令
//将应答状态定义为全局
var-answerState=0;
//将原始函数定义为要作为参数插入的变量
//addListener()并将answerState参数传递给它
var answerQuestion=功能(通道、用户、消息、应答状态){
console.log(user.username+':'+消息);
var msg=消息;
if(msg.toLowerCase().indexOf(“!ff”)==0){
var parts=msg.split(“”);
如果(零件长度>1){
parts.shift();
var player=parts.join(“”);
客户。说(频道,玩家+“想玩家族财富游戏!”);
}
如果(应答状态<5){
如果(msg.toLowerCase().indexOf(“!answer”)==0{
var parts=msg.split(“”);
如果(零件长度>1){
parts.shift();
var answer=parts.join(“”);
io.emit('answer',{player,answer});
log('转到index.html | io.emit“answerState”);
//如果答案正确,则中断功能
如果(答案===正确){
应答状态=0;
回来
}
//递归调用函数,直到answerState=5
否则{
answerQuestion(频道、用户、消息、answerState++);
}
}
}
}
}
}
//添加您的侦听器并插入answerQuestion作为带有answerState的参数
client.addListener('chat',answerQuestion(频道、用户、消息、answerState));
我之所以避免使用while循环,是因为我听说它会干扰浏览器并导致崩溃。我想我读错了?如果你想以后重新运行代码,而不是一次全部运行并继续调用它,请参阅我的编辑。您可能希望将变量Answerstate声明为函数外部的全局变量。这样,您可以多次运行该函数,而无需将其重置为0。你可以完全避免while或for循环。但我不确定,我还没有听说while循环在浏览器中是危险的。我编辑代码是为了传达可能需要进行的更改,以使代码正常工作。嘿,David,所以,我最终以不同的方式解决了这个问题。现在是两个独立的命令,一个叫!ff初始化我创建的gamestatus变量。如果GameStatus=1
,那么player
就可以了!将io.emit
发送到html页面的应答。我会勾选你的答案,因为它确实有效。
player = {};
answer = {};
socket.on('answer', function (player, answer) {
console.log('player');
console.log('answer');
});
//Commands
//Define answerState as a global
var answerState = 0;
//Define your original function as a variable to insert as an argument to
//client.addListener() and pass the answerState argument to it
var answerQuestion = function (channel, user, message, answerState) {
console.log(user.username + ': ' + message);
var msg = message;
if (msg.toLowerCase().indexOf("!ff") == 0) {
var parts = msg.split(" ");
if(parts.length > 1) {
parts.shift();
var player = parts.join(" ");
client.say(channel, player + " wants to play Family Fortunes!");
}
if (answerState < 5) {
if (msg.toLowerCase().indexOf("!answer") == 0) {
var parts = msg.split(" ");
if(parts.length > 1) {
parts.shift();
var answer = parts.join(" ");
io.emit('answer',{player, answer});
console.log('Going over to index.html | io.emit "answerState" ');
//if answer is correct break out of function
if (answer === correct) {
answerState = 0;
return;
}
//call the function recursively until answerState = 5
else {
answerQuestion(channel, user, message, answerState++);
}
}
}
}
}
}
//add your listener and insert answerQuestion as the argument with answerState
client.addListener('chat', answerQuestion(channel, user, message, answerState));