no-async-promise-executor
禁止使用异步函数作为 Promise 执行器
        ✅ 推荐
        
在配置文件中使用来自 @eslint/js 的 recommended 配置启用此规则
new Promise 构造函数接受一个执行器函数作为参数,该函数具有 resolve 和 reject 参数,可用于控制创建的 Promise 的状态。例如
const result = new Promise(function executor(resolve, reject) {
  readFile('foo.txt', function(err, result) {
    if (err) {
      reject(err);
    } else {
      resolve(result);
    }
  });
});
执行器函数也可以是 async function。但是,这通常是一个错误,原因如下:
- 如果异步执行器函数抛出错误,则错误将丢失,并且不会导致新构建的 Promise拒绝。这可能会使调试和处理某些错误变得困难。
- 如果 Promise 执行器函数正在使用 await,这通常表明实际上没有必要使用new Promise构造函数,或者可以缩小new Promise构造函数的范围。
规则详情
此规则旨在禁止异步 Promise 执行器函数。
此规则的错误代码示例
                            在 Playground 中打开
/*eslint no-async-promise-executor: "error"*/
const foo = new Promise( (resolve, reject) => {
  readFile('foo.txt', function(err, result) {
    if (err) {
      reject(err);
    } else {
      resolve(result);
    }
  });
});
const result = new Promise( (resolve, reject) => {
  resolve(await foo);
});
此规则的正确代码示例
                            在 Playground 中打开
/*eslint no-async-promise-executor: "error"*/
const foo = new Promise((resolve, reject) => {
  readFile('foo.txt', function(err, result) {
    if (err) {
      reject(err);
    } else {
      resolve(result);
    }
  });
});
const result = Promise.resolve(foo);
何时不使用它
如果您的代码库不支持 async function 语法,则无需启用此规则。
版本
此规则在 ESLint v5.3.0 中引入。