deno.com

禁止异步 Promise 执行器

注意:此规则是 recommended 规则集的一部分。
deno.json 中启用完整集合
{
  "lint": {
    "rules": {
      "tags": ["recommended"]
    }
  }
}
使用 Deno CLI 启用完整集合
deno lint --rules-tags=recommended
通过将其添加到 deno.json 中的 includeexclude 数组,此规则可以明确地包含或排除在当前标签的规则之外。
{
  "lint": {
    "rules": {
      "include": ["no-async-promise-executor"],
      "exclude": ["no-async-promise-executor"]
    }
  }
}

要求不使用异步 Promise 执行函数。

Promise 构造函数接受一个执行器函数作为参数,该函数带有 resolvereject 参数,可用于控制创建的 Promise 的状态。此函数允许是异步的,但这通常不是一个好主意,原因有以下几点:

  • 如果异步执行器函数抛出错误,该错误将丢失,并且不会导致新构造的 Promise 被拒绝。这可能会使调试和处理某些错误变得困难。
  • 如果异步 Promise 执行函数正在使用 await,那么这通常表明实际上没有必要使用新的 Promise 构造函数,并且可以重构代码以避免使用 Promise,或者可以缩小新 Promise 构造函数的范围,提取异步代码并将其更改为同步。

无效示例

new Promise(async function (resolve, reject) {});
new Promise(async (resolve, reject) => {});

有效示例

new Promise(function (resolve, reject) {});
new Promise((resolve, reject) => {});

您找到所需内容了吗?

隐私政策