Files
skillhub-088-vercel-react-b…/rules/async-cheap-condition-before-await.md
2026-07-13 21:36:17 +08:00

1.3 KiB

title, impact, impactDescription, tags
title impact impactDescription tags
在异步标记前检查廉价条件 当同步守卫已失败时,避免不必要的异步工作 async, await, feature-flags, short-circuit, conditional

在异步标记前检查廉价条件

当一个分支使用了 await 来获取某个标记(flag)或远程值,并且同时需要满足一个廉价的同步条件(本地 props、请求元数据、已加载的状态)时,应当评估那个廉价条件。否则,即便复合条件永远不可能为真,你仍然要为异步调用付出代价。

这是 延迟 Await 至需要时flag && cheapCondition 类型检查中的一种特化应用。

错误写法:

const someFlag = await getFlag()

if (someFlag && someCondition) {
  // ...
}

正确写法:

if (someCondition) {
  const someFlag = await getFlag()
  if (someFlag) {
    // ...
  }
}

getFlag 涉及网络请求、特性标记服务、React.cache 或数据库操作时,这一点尤为重要:当 someConditionfalse 时跳过它,就能在冷路径上省去这一开销。

如果 someCondition 本身开销较大、依赖于该标记,或者你必须按固定顺序执行副作用,则保持原来的顺序。