You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:27:00