Promise 与 async/await
async/await 是异步编程的现代标准:用 async 标记函数返回 Promise,在函数内用 await 等待结果。代码读起来像同步,但底层完全异步、不阻塞事件循环。
规则:await 只能在 async 函数里用(顶层 await 需 ESM);await 后面跟 Promise,等它 resolve 才继续;它让 try/catch 重新可以捕获异步错误了——这是相比 then/catch 的最大便利。
- async 函数永远返回 Promise;非 Promise 返回值会被包装
- await 暂停当前函数(不阻塞进程),类似“读到一半先让出”
- 配合 try/catch 同时捕获同步与异步错误,代码骨架最清晰
const fs = require('fs'); const fsp = fs.promises; // 串行读取:await 依次等待,代码却是一条直线 async function loadAll() { try { const user = await fsp.readFile('./user.json', 'utf8'); const perm = await fsp.readFile('./perm.json', 'utf8'); return { user, perm }; } catch (e) { console.error('读取失败:', e.message); return null; } } // 并行:互不依赖的异步用 Promise.all 一起跑,快得多 async function loadParallel() { const [user, perm] = await Promise.all([ fsp.readFile('./user.json', 'utf8'), fsp.readFile('./perm.json', 'utf8'), ]); return { user, perm }; } (async () => { console.log(await loadAll()); console.log(await loadParallel()); })();




