使用async/await定义报错:Promise executor functions should not be async.eslintno-async-promise-executor?

作者站长头像
站长
· 阅读数 10

现有这样的定义async/await的场景:


const getOSQueryBuilder = async (): Promise<Repository<ConfigEntities>> => {
  return Database.getRepository(ConfigEntities)
}

class OSService {
  // 根据ID查询操作
  static async getConfig(id: string): Promise<unknown> {
    return new Promise(async (resolve) => {  // 这里的async会弹窗报错
      const osQueryBuilder = await getOSQueryBuilder()
      const data = (await osQueryBuilder).findOne({
        where: {
          id
        }
      })
      resolve(data)
    })
  }
}

报错信息:使用async/await定义报错:Promise executor functions should not be async.eslintno-async-promise-executor?

Promise executor functions should not be async.eslintno-async-promise-executor

请问这里应该如何整改呢?

回复
1个回答
avatar
test
2024-09-07

你把异步抽成一个函数 调用就行了 这样 Promise executor 本身就不是异步函数了

const getOSQueryBuilder = async (): Promise<Repository<ConfigEntities>> => {
  return Database.getRepository(ConfigEntities)
}

class OSService {
  // 根据ID查询操作
  static async getConfig(id: string): Promise<unknown> {
    return new Promise((resolve) => {  // 这里的async会弹窗报错
      async function inquire() {
        const osQueryBuilder = await getOSQueryBuilder()
        const data = (await osQueryBuilder()).findOne({
          where: {
            id
          }
        })
        resolve(data)
      }
      inquire();
    })
  }
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容