跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

async和await是什么_javascript中如何简化异步?

async/await 是 JavaScript 中简化异步操作的语法糖,使 Promise 代码更直观;async 函数自动返回 Promise,await 暂停执行直至 Promise 完成,支持 try/catch 错误处理,但需注意避免串行等待影响性能。

async 和 await 是 JavaScript 中用来简化异步操作的语法糖,它们让基于 Promise 的异步代码写起来像同步代码一样直观,避免了回调地狱和冗长的 .then() 链。

async 用来声明一个函数是异步的在函数声明前加 async 关键字,这个函数就会自动返回一个 Promise。即使你 return 一个普通值,它也会被包装成 resolved 状态的 Promise。

如果函数里 return 42,调用后实际得到的是 Promise.resolve(42)如果函数里 throw 错误,等价于返回 Promise.reject(err) async 函数内部可以放心使用 await,但 await 只能在 async 函数里用await 用来等待一个 Promise 完成await 只能出现在 async 函数中,它会暂停当前函数的执行(不阻塞主线程),直到右侧的 Promise settle(fulfilled 或 rejected),然后继续往下走。

await fetch('/api/data') 会等请求完成,再把响应对象赋给变量如果 Promise 被 reject,await 会直接抛出错误,可以用 try/catch 捕获await 后面不一定是 Promise,也可以是普通值,这时会立即返回该值对比传统 Promise 写法,更清晰易读以前要串行发两个请求,得这样写:立即学习“Java免费学习笔记(深入)

”;

Find JSON Path Online Easily find JSON paths within JSON objects using our intuitive Json Path Finder下载fetch('/user').then(res => res.json()).then(user => fetch(`/posts?userId=${user.id}`)).then(res => res.json())用 async/await 就变成:async function getUserPosts() {const userRes = await fetch('/user');const user = await userRes.json();const postRes = await fetch(`/posts?userId=${user.id}`);return await postRes.json();}逻辑顺序一目了然,错误处理也更自然。

常见注意事项async/await 不是万能的,用错地方反而影响性能或逻辑。

多个独立请求别傻等:需要并发时,用 Promise.all([await a(), await b()]) 是错的,应该先发起再 await别在循环里盲目 await:for (let i of list) { await doAsync(i) } 是串行的,想并行就用 map + Promise.all await 不等于同步:它只是让代码看起来像同步,底层仍是事件循环驱动,不会真正“卡住”

浏览器基本上就这些。掌握 async 和 await,配合 Promise.all、Promise.race 等工具,JavaScript 异步处理就变得清晰又可控。

相关文章