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中文网其他相关文章!