我以为我知道如何实现回调,这就是我所拥有的:
的index.html:
socket.on('userCapture', data, function(callback){
if(callback){
//do stuff
} else {
alert('Username in use.');
}
});
index.js:
socket.on('userCapture', function(data, callback){
username = data.username;
question = data.question;
socket.username = username;
socket.room = username;
function isInArray(arr,obj) {
return (arr.indexOf(obj) != -1);
}
if(isInArray(usernames, username)){
callback(false);
} else {
callback(true);
}
});
我的想法是检查usernames数组中传递的值并传递回客户端(如果存在或不存在)。我不明白为什么它导致未定义,因为我在其他地方有完全相同的代码并且它的工作原理..
此致
答案 0 :(得分:0)
您正在为socket.on()
指定回调,但您不能这样做。
根据{{3}},emit()
或send()
可以进行回调,因为您希望基本上发送消息,然后在不编写其他socket.on()
的情况下检索结果。
更改您的代码以使用emit()
客户代码
socket.emit('userCapture', data, function(response){
if(response){
//do stuff
} else {
alert('Username in use.');
}
});
服务器代码
socket.on('userCapture', function(data, callback){
username = data.username;
question = data.question;
socket.username = username;
socket.room = username;
function isInArray(arr,obj) {
return (arr.indexOf(obj) != -1);
}
// you can just send the result back
callback(isInArray(usernames, username));
});