回调不是一个功能?

时间:2017-02-02 13:32:19

标签: 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");
        }
    });
}

通过回调调用函数check

check函数在完成时返回true:

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

    if(m != "OK"){
        setTimeout(check, 1000);
        return;
    }
    return callback(true);
}

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

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

1 个答案:

答案 0 :(得分:6)

您没有在callback

中传递setTimeout
setTimeout(function () {
    check(callback)
}, 1000);

而不是

setTimeout(check, 1000);

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

setTimeout(check.bind(null, callback), 1000);.