我以为自己知道如何实现回调,这就是我所拥有的:
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);
}
});
我的想法是我检查用户名数组中传递的值,然后将其传递回客户端(如果它存在或不存在)。我不明白为什么它会导致未定义,因为我在其他地方具有完全相同的代码并且可以工作。
问候
您正在为指定一个回调socket.on()
,但是您不能这样做。可以使用Socket.io文档emit()
或send()
根据Socket.io文档进行回调,因为您希望基本上发送一条消息,然后检索结果而无需编写其他内容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));
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句