JS回调返回undefined不是函数

理查德

我以为自己知道如何实现回调,这就是我所拥有的:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章