Skip to content
← Back to rules

eslint/no-promise-executor-return Pedantic

🚧 An auto-fix is planned for this rule, but not implemented at this time.

作用 ​

禁止在 Promise 执行器函数中返回值。

为什么这不好? ​

new Promise 构造函数接受一个执行器函数作为参数, 它包含 resolve 和 reject 参数,可用于控制 所创建 Promise 的状态。

执行器的返回值会被忽略。在执行器函数中返回一个值 可能是一个错误,因为返回的值无法被使用,并且它 不会以任何方式影响 Promise。

示例 ​

此规则的错误代码示例:

javascript
new Promise((resolve, reject) => {
  if (someCondition) {
    return defaultResult;
  }
  getSomething((err, result) => {
    if (err) {
      reject(err);
    } else {
      resolve(result);
    }
  });
});

new Promise((resolve, reject) =>
  getSomething((err, data) => {
    if (err) {
      reject(err);
    } else {
      resolve(data);
    }
  }),
);

new Promise(() => {
  return 1;
});

此规则的正确代码示例:

javascript
new Promise((resolve, reject) => {
  if (someCondition) {
    resolve(defaultResult);
    return;
  }
  getSomething((err, result) => {
    if (err) {
      reject(err);
    } else {
      resolve(result);
    }
  });
});

new Promise((resolve, reject) => {
  getSomething((err, data) => {
    if (err) {
      reject(err);
    } else {
      resolve(data);
    }
  });
});

new Promise((r) => {
  r(1);
});

配置 ​

此规则接受一个包含以下属性的配置对象:

allowVoid ​

type: boolean

default: false

如果为 true,允许返回 void 表达式(例如,return void resolve())。

使用方法 ​

To enable this rule using the config file or in the CLI, you can use:

json
{
  "rules": {
    "no-promise-executor-return": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "no-promise-executor-return": "error",
  },
});
bash
oxlint --deny no-promise-executor-return

版本 ​

此规则在 v1.33.0 中添加。

参考资料 ​