Node.js - 无法在if语句中使用回调

时间:2017-07-24 00:55:18

标签: node.js callback socket.io

您好我正在尝试在if语句中执行回调,但我得到" TypeError:回调不是函数" 这是我的代码:

socket.on('authenticate', function (data, callback) {

    // this works
    callback("false");

    // this doesn't work
    if (data == "abc") {
        callback("true");
    }

});

1 个答案:

答案 0 :(得分:0)

始终检查是否通过了可调用函数,至少只执行if(callback)

在您的问题中,可能存在客户端不等待回调的情况(完成发出调用而不传递回调参数)。


试试这个解决方案:

socket.on('authenticate', function (data, callback) {
    console.debug('socket authenticate:', data); // for debug purposes

    if (data == "abc") {
        if(callback) { // callback may not be passed
          callback(null, true); // keep in mind in callbacks first argument is error second is result
        }
        return; // return will prevent execution to go down, because most of times used for resulting call.
    }

    if(callback) { // callback may not be passed
      callback("Not authenticated", false); 
    }
});