为什么这个带有promise的简单nodejs程序永远运行?

我正在运行一个相当简单的nodejs程序,它从一个mssql数据库中取出一些行,用它们做一些事情,然后退出。

相反,它做它应该做的,但是然后永远运行。

我忘记了什么让程序完成?

还是只是我的期望,当所有的承诺已经履行的程序将退出是错误的,我需要手动终止?

'use strict'; var mssql = require('mssql'); var myssqlConfig = { user: '...', password: '...', server: '...', port: 1435, database: '...' }; mssql.connect(myssqlConfig).then(function() { new mssql.Request() .input('someRow', mssql.VarChar(), 'someValue') .query("SELECT * FROM tableName WHERE someColumn > @someValue") .then(function(recordset){ // do non-relevant stuff with the record set. }) .catch(function(err){ console.log('Error: '+err); }); }).catch(function(err) { console.log('Connection Error: '+err); }); 

       

网上收集的解决方案 "为什么这个带有promise的简单nodejs程序永远运行?"

如果你想要退出进程,你必须调用process.exit() 。 您可以发送一个0或1的退出状态来指示它是干净还是错误状态。 这将导致它立即退出。

如果您希望在完成当前工作后退出(即待处理asynchronous任务),那么您将设置process.exitCode = 0或1(如果出错),这是更优雅的退出。

对于后者的工作,你实际上也需要断开数据库,因为打开的连接将被视为待处理的工作。