我在CLI应用程序中使用Bluebird。
出于某种原因,该应用尚未完成,但我无法理解为什么。我尝试在调试(在Webstorm中)运行并暂停,而它已经挂起了#34;但我没有得到任何信息。
代码格式为:
Promise.all([ /* promises */ ])
.then(function () {
return Promise.all([ /* promises */ ]);
})
.then(function () {
return console.log("Done");
})
.catch(function (err) {
return console.error("Failed: " + err);
});
应用程序报告Done
并通过检查我的数据库(因为承诺来自SQL INSERT),我可以看到所有内容。
我正在使用
mysql.createPool();
从promise-mysql
发送我的查询。
如何调试此挂起?或者我可以探索常见的失败模式吗?
答案 0 :(得分:3)
听起来你可能没有关闭所有的mysql连接或者没有终止池。如果你还没有这样做,那么在你的mysql操作之后在.finally()
中处理它是明智的:
pool.end();
如docs所示(强调补充):
完成池的使用后,必须结束所有连接,否则Node.js事件循环将保持活动状态,直到MySQL服务器关闭连接。如果在脚本中使用池或尝试正常关闭服务器时,通常会执行此操作。要结束池中的所有连接,请使用池上的end方法
答案 1 :(得分:-3)
可以添加
.then(null, function (error) {
return console.log(error);
})
也许它失败了,你不会抓住这个案子