Я знаю, что это было предложено в сотни раз, однако я написал кучу функций обратного вызова прежде, и я думаю, что я только что немного слепой к моей проблеме/Обратный звонок не является функцией?
У меня есть функция:
function firstSend(){
client.write(Buffer.from([0x5C,0x57,0x31,0x32,0x33,0x34,0x2F]));
check(function(msg){
if(msg == true){
console.log("Lets go");
}
});
}
это вызывает функцию check
с обратным вызовом
функция проверки возвращает верно, когда она будет завершена:
function check(callback) {
let m;
if(message != null) m = message.trim();
if(m != "OK"){
setTimeout(check, 1000);
return;
}
return callback(true);
}
Все работает правильно, пока не попытается выполнить обратный вызов, и в этот момент он говорит мне, что это не функция.
Я вошел обратный вызов, и он входит в функции, так что я немного тупик
Внутренние элементы 'setTimeout' не знают, что вы хотите передать' check', поэтому он ничего не пропускает. Вы можете решить эту проблему, передав функцию, которая закрывается над 'callback' и вызывает' check' с этим аргументом. 'setTimeout (() => check (callback), 1000)' –
Другим решением является передача 'callback' в качестве отдельного аргумента в' setTimeout', который сообщает 'setTimeout', что вы хотите, чтобы он пересылался на' check' при вызове , 'setTimeout (check, 1000, callback)'. Он вариативен, и так много дополнительных аргументов, которые будут установлены в 'setTimeout', будут отправлены в вашу функцию. –