Skip to content

no-async-promise-executor

禁止在Promise的executor函数中使用async函数

为什么

在Promise的executor函数中使用async函数通常是一个错误,因为如果async函数抛出错误,错误将会丢失,不会导致新构造的Promise被拒绝。使得调试和处理某些错误变得困难。

建议

不要在Promise的executor函数中使用async函数。

错误示例

js
const foo = new Promise(async (resolve, reject) => {
  readFile('foo.txt', function (err, result) {
    if (err) {
      reject(err);
    } else {
      resolve(result);
    }
  });
});
const foo = new Promise(async (resolve, reject) => {
  readFile('foo.txt', function (err, result) {
    if (err) {
      reject(err);
    } else {
      resolve(result);
    }
  });
});

正确示例

js
const foo = new Promise((resolve, reject) => {
  readFile('foo.txt', function (err, result) {
    if (err) {
      reject(err);
    } else {
      resolve(result);
    }
  });
});
const foo = new Promise((resolve, reject) => {
  readFile('foo.txt', function (err, result) {
    if (err) {
      reject(err);
    } else {
      resolve(result);
    }
  });
});

参考