[英]How do you call a object method from within an addEventListener() call?
[英]How do you call a recursive method from within a method in javascript with nodejs?
我正在嘗試建立到我的 MySQL 數據庫的連接,到目前為止它正在工作,但是當我運行 nodejs 應用程序時,我沒有讀取/更新我的數據庫中的任何內容,連接關閉:
錯誤:連接丟失服務器關閉了連接
所以我在谷歌上搜索並找到了這個stackoverflow 問題。 但是我無法讓它工作,我認為這是因為我正在使用一個類而不是一個函數。
以下是我目前擁有的代碼:
class ConnectionFactory {
constructor() {
this.connectAndHandleDisconnect();
}
connectAndHandleDisconnect() {
connection = mysql.createConnection(db_config);
connection.connect(function(err) {
if(err) {
console.log('error when connecting to db:', err);
setTimeout(connectAndHandleDisconnect, 2000);
}
});
connection.on('error', function(err) {
console.log('db error', err);
if(err.code === 'PROTOCOL_CONNECTION_LOST') {
connectAndHandleDisconnect(); // Error pops up from this line
} else {
throw err;
}
});
}
}
我收到以下錯誤消息:
參考錯誤:connectAndHandleDisconnect 未定義
我試圖將 connectAndHandleDisconnect() 替換為 this.connectAndHandleDisconnect() 和 self.connectAndHandleDisconnect() 但我不知道如何找到此錯誤的修復方法。
您需要通過this
(或引用具有該方法的實例)訪問方法,如下所示:
class ConnectionFactory {
constructor() {
this.connectAndHandleDisconnect();
}
connectAndHandleDisconnect() {
connection = mysql.createConnection(db_config);
const self = this;
connection.connect(function(err) {
if(err) {
console.log('error when connecting to db:', err);
setTimeout(self.connectAndHandleDisconnect, 2000);
}
});
connection.on('error', function(err) {
console.log('db error', err);
if(err.code === 'PROTOCOL_CONNECTION_LOST') {
self.connectAndHandleDisconnect(); // Error pops up from this line
} else {
throw err;
}
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.