Node.js中如何将Promise写法转换为async/await语法?
Promise转async/await改造方案
你提供的execSqlQuery方法本身已经是标准的Promise封装实现,无需修改该封装逻辑,async/await是Promise的语法糖,仅需在调用该方法的位置使用即可,调用示例如下:
// 外层函数添加async标记 async function getSqlData() { try { // 调用promise方法前加await,直接拿到返回结果 const recordSets = await execSqlQuery('存储过程名称', [ {name: 'param1', type: sql.VarChar, value: 'test'} ]) // 直接处理返回结果,无需写.then回调 console.log('查询结果', recordSets) } catch (err) { // catch块捕获异常,无需写.catch回调 console.error('查询出错', err) } }
如果你希望简化原有封装的手动Promise包装逻辑,可以利用mssql库原生支持的Promise调用,改造后的封装代码如下:
module.exports = { execSqlQuery: async function (procedure, parameters) { const request = new sql.Request(connPool); parameters.forEach(parameter => { request.input(parameter.name, parameter.type, parameter.value); }); // 直接await执行结果,无需手动new Promise处理回调 return await request.execute(procedure); } }
VS Code Promise语法不高亮解决方案
- 确认当前打开文件的后缀为
.js,点击VS Code右下角状态栏的语言模式选项,设置为JavaScript - 检查VS Code内置的「JavaScript and TypeScript」扩展是否被禁用,开启后重启编辑器即可
- 可在项目根目录新增
jsconfig.json文件,添加如下配置开启ES6+语法识别:
{ "compilerOptions": { "target": "ES6" }, "exclude": ["node_modules"] }
内容的提问来源于stack exchange,提问作者Durga
相关产品推荐
相关产品推荐

