ESLint 如何解决 “Promise executor functions should not be async” 报错

阅读时长 3 分钟读完

在前端开发中,我们经常会使用 Promise 来处理异步操作。然而,在使用 Promise 的时候,我们可能会遇到如下 ESLint 报错:

这个报错的意思是 Promise 的执行函数不应该是 async 函数,那么为什么不能使用 async 函数呢?这是因为 Promise 的执行函数是在创建 Promise 实例时立即执行的,而 async 函数会返回一个 Promise 对象,这会导致 Promise 实例的行为不可预期。

那么如何解决这个问题呢?下面我们来介绍两种解决方法。

解决方法一:使用普通函数

将 Promise 的执行函数改为普通函数即可解决这个问题。示例代码如下:

解决方法二:使用 ESLint 插件

如果你不想改变 Promise 的执行函数为普通函数,也可以通过使用 ESLint 插件来解决这个问题。我们可以使用 eslint-plugin-promise 插件来禁止使用 async 函数作为 Promise 的执行函数。

首先,我们需要安装该插件:

然后,在 ESLint 的配置文件中添加以下配置:

-- -------------------- ---- -------
-
  ---------- -
    ---------
  --
  -------- -
    -------------------- ------
    --------------------------------- ------
    --------------------- ------
    --------------------------------- ------
    ------------------------- --------
    ---------------------- --------
    ----------------------- --------
    ------------------------------------ -------
  -
-

其中,"promise/no-async-promise-executor": "error" 表示禁止使用 async 函数作为 Promise 的执行函数。

总结

在使用 Promise 的时候,我们应该避免使用 async 函数作为 Promise 的执行函数,因为这会导致 Promise 实例的行为不可预期。如果你不想改变 Promise 的执行函数为普通函数,也可以通过使用 ESLint 插件来解决这个问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/656fdfc7d2f5e1655d857ca1

纠错
反馈