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?