두 함수 funcA
및 funcB
이 있습니다. funcA
은 funcB
으로 전화하고 은 콜백을 전달합니다. funcA
에서 콜백 (cb
)은 잘 정의되어 있지만 funcB
은 undefined
이됩니다. 여기 함수 매개 변수로 전달 된 후 콜백이 null이됩니다.
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]);
}
};
그리고 여기에 콘솔 출력입니다 : 코드베이스에서 나는 funcB
및 funcB
성공적으로 콜백을 호출 호출 다른 기능을 가지고
cb ok
funcB
callback: (reading) => {
console.log("Will resolve:" + reading);
resolve(funcC(reading));
}
CB ?
no callback
undefined
참고.
'if (c)'의 코드는 무엇입니까? 어쩌면'callback'을 무언가로 설정했을까요? @Bergi'c'가 false로 평가되면 [if (c)]의 코드가 결코 실행되지 않습니다. [mcve] – Bergi
을 게시하십시오. 나는 코드를 추가했다.'funcB'가 한 번만 호출 되었기 때문에 실행되지 않는다는 것을 알 수있다. –
'MyClass'는 어떻게 정의되고 인스턴스화됩니까? 'this.device.send'에 무엇이 있습니까? MyClass 정의로이 코드를 실행했는데 괜찮 았어. 'let MyClass = function() { this.device = { send : function (a, c) { c ('response'); } } }'괜찮습니까? CB! ' – barnski