Promise 和連接問題
在此 Node.js 程式碼中,promise 預計會等待 findUser 函數完成,這事實並非如此。該問題源自於資料庫查詢的非同步執行。
連接回呼函數
在 findUser 中,使用 pool.getConnection 建立與資料庫的連線。此函數採用回調函數作為參數,當連接準備就緒時呼叫函數。但是,程式碼在此回調中錯誤地傳回數據,導致在查詢完成之前傳回 undefined。
要解決此問題,findUser 函數應將回呼傳遞給 pool.getConnection 來解析或拒絕承諾,指示查詢是否成功。
Chaining Promises
使用Promise 允許順序執行程式碼。在提供的程式碼中,第一個Promise 應該使用then 而不是回調函數連結到下一個Promise,如下所示:
promise.then(function(rows) { return new Promise(function (resolve, reject) { loginC.doSomething(data); if (success) { resolve(data); } else { reject(reason); } }); }, function(reason) { console.log("error handler second"); });
錯誤處理
The之所以輸出「error handler secondary」訊息,是因為資料庫連線失敗時發生錯誤。 connection.on('error') 事件偵聽器中的錯誤處理未正確使用。此錯誤傳播到 findUser 函數,並被鏈中的第二個錯誤處理程序捕獲。
findUser 函數應該拒絕帶有錯誤訊息的 Promise,然後該錯誤訊息將傳播到 Promise 鏈中的錯誤處理程序.
以上是在處理資料庫查詢時,如何在 Node.js 中正確連結 Promise?的詳細內容。更多資訊請關注PHP中文網其他相關文章!