Я хотел создать класс, где я создаю интервал, используя функцию setInterval()
, если определенная переменная имеет определенное значение. Как обработчик, я вставил предопределенную функцию, однако, при попытке запустить код, он говорит, что функция не определена. Вот код.
class Bot {
i = 0;
constructor() {
switch (this.i) {
case 0:
this.interval = setInterval(this.foo, 1000);
break;
}
}
foo = () => {
console.log("hi")
};
//Other Syntaxes I tried without luck:
foo = function() {
console.log("hi");
}
function foo() {
console.log("hi");
}
foo() {
console.log("hi");
}
//I also tried first defining the function, and then creating a constructor
}
РЕДАКТИРОВАТЬ: Я решил поделиться с вами полным кодом, однако я просто хотел бы добавить, что я знаю, что уже есть очень мощная библиотека, которая позволяет запускать Бот на Discord, но это о том, чтобы сделать это самостоятельно. Вот вам go:
class Bot {
ws = new WebSocket('wss://gateway.discord.gg/?v=6&encoding=json');
sequence = null;
heartbeating;
token;
constructor(token) {
this.token = token;
this.ws.on('open', this.open);
this.ws.on('message', this.incoming);
this.ws.on('close', this.close);
}
open() {
console.log("open");
}
incoming(payload) {
var data = JSON.parse(payload);
switch (data.op) {
case 10:
//This is the problematic line where I'm trying to enter the function.
this.heartbeating = setInterval(this.heartbeat, data.d.heartbeat_interval);
break;
case 11:
console.log("Heartbeat ACK");
break;
default:
console.log(data);
}
}
close(e){
console.log(e);
}
heartbeat() {
var payload = {
op: 1,
d: sequence
}
ws.send(JSON.stringify(payload));
}
identify(){
//TODO identify with Discord
}
}
Кроме того, я хочу извиниться за то, что не поделился с вами фактическим сообщением об ошибке: TypeError [ERR_INVALID_CALLBACK]: Callback must be a function. Received undefined