Prompts-MCP 686 skills · ai / design / design-pattern / framework / fundamentals / habit / lang / tech-selection /mcp/sse
lang lang/javascript/async/async-await-only.md medium

javascript-async-await-only

禁 callback 风格 — 全 async/await。Use when 写 JavaScript 代码 / 评审涉及 `async-await-only` 的 PR。

asyncawaitcallback风格
paths
  • *.js
  • *.ts

JS · 全 async/await

规则

禁 callback 风格(除非第三方库强制)。全部走 Promise + async/await。

反例 → 正例

// ❌ callback 风格
fs.readFile("data.json", (err, data) => {
  if (err) return console.error(err);
  parse(data, (err2, result) => { ... });
});

// ✅ async/await + util.promisify
import { readFile } from "node:fs/promises";
async function loadData() {
  const data = await readFile("data.json", "utf-8");
  return parse(data);
}

错误处理

// ✅ try/catch
async function handler(req, res, next) {
  try {
    const data = await loadData(req.params.id);
    res.json(data);
  } catch (err) {
    next(err);   // Express 错误中间件接管
  }
}

并发

// ❌ 串行
const a = await callA();
const b = await callB();

// ✅ Promise.all
const [a, b] = await Promise.all([callA(), callB()]);

自检

  • [ ] 无嵌套 callback(pyramid of doom)?
  • [ ] try/catch 完整覆盖 await?
  • [ ] 并发请求用 Promise.all?

相关