回调不是一个功能?

K20*_*0GH 0 javascript callback

我知道这已被问了好几百次了,不过我以前写过很多回调函数而且我觉得我对我的问题有点盲目/

我有一个功能:

function firstSend(){
    client.write(Buffer.from([0x5C,0x57,0x31,0x32,0x33,0x34,0x2F]));

    check(function(msg){
        if(msg == true){
            console.log("Lets go");
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

调用该函数check与回调

完成后,check函数返回true:

function check(callback) {
    let m;
    if(message != null) m = message.trim();

    if(m != "OK"){
        setTimeout(check, 1000);
        return;
    }
    return callback(true);
}
Run Code Online (Sandbox Code Playgroud)

一切正常,直到它尝试进行回调,此时它告诉我它不是一个函数.

我已经记录了回调,它记录为一个函数,所以我有点难过

Sat*_*pal 6

你是不是在传递callbacksetTimeout

setTimeout(function () {
    check(callback)
}, 1000);
Run Code Online (Sandbox Code Playgroud)

代替

setTimeout(check, 1000);
Run Code Online (Sandbox Code Playgroud)

或者,您也可以使用 bind()

setTimeout(check.bind(null, callback), 1000);.
Run Code Online (Sandbox Code Playgroud)