await只能在async函数内使用,用于暂停当前函数执行并等待promise解析;非promise值会被自动包装,reject需try/catch捕获;它不阻塞线程,仅暂停当前async函数。

await 只能在 async 函数内部使用,它会让 JS 暂停当前函数的执行,等待 Promise 解析完成,再继续往下运行。
必须配合 async 函数使用
单独写 await somePromise() 会报语法错误。必须把包含 await 的代码放在用 async 声明的函数里:
- 普通函数不行:
function foo() { await fetch('/api'); }→ 报错 - 正确写法:
async function foo() { const res = await fetch('/api'); }
await 等待的是 Promise(或可转为 Promise 的值)
如果 await 后面不是 Promise,JS 会自动用 Promise.resolve() 包一层:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
-
await 123等价于await Promise.resolve(123) -
await Promise.reject('fail')会抛出错误,需用 try/catch 捕获 - 常见场景:
const data = await fetch('/user').then(r => r.json())
错误处理要用 try/catch
await 遇到被 reject 的 Promise 会直接抛出异常,不会静默失败:
- 不加捕获:程序中断,控制台报错
- 推荐写法:try { const res = await fetch('/api'); } catch (err) { console.error(err); }
- 也可以用 .catch(),但不如 try/catch 直观清晰
await 是“暂停”,不是“阻塞”
它只暂停当前 async 函数的执行,不会卡住整个线程或 UI:
- 其他同步代码、定时器、事件监听仍能正常运行
- await 后面的代码会被放入微任务队列,等 Promise settle 后才执行
- 视觉上就像“等一下再继续”,但浏览器依然响应用户操作










