作为函数参数传递后,回调变为null

时间:2017-12-06 18:03:56

标签: javascript node.js callback promise

我有2个函数funcAfuncBfuncA调用funcB和 通过回调。在funcA中,回调(cb)定义明确,但是 funcB获得undefined

以下是代码:

MyClass.prototype.funcA= function (a) {
    return new Promise((resolve, reject) => {
        let cb = (reading) => {
            console.log("Will resolve:" + reading);
            resolve(funcC(reading));
        };

        if (cb) 
            console.log("cb ok");
        else
            console.log("cb ko");

        this.funcB(a, cb);
    });
}

MyClass.prototype.funcB= function (a, callback, c) {
    console.log("funcB");
    console.log("callback: " + callback);
    this.device.send(a, response => {
        console.log("CB ?");
        if (callback) {
            console.log("CB !");
            callback(response);
        }
        else {
            console.log("no callback");
            console.log(callback);
        }
    });

    if (c) {
        funcB([0x00, 0x00]);
    }
};

这是控制台输出:

cb ok
funcB
callback: (reading) => {
            console.log("Will resolve:" + reading);
            resolve(funcC(reading));
        }
CB ?
no callback
undefined

请注意,在代码库中我有其他函数调用funcBfuncB成功调用回调。

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。

this.device.send()不会调用它给出的回调,而是调用前一次调用中给出的回调。由于没有记录,我不得不去3层找到实施......

所以解决方案就是调用funcB(),直到调用你想要的回调。