什么是async和await?

简介: 什么是async和await?

async 和 await 是 JavaScript(特别是 ES2017 及更高版本)中用于处理异步操作的关键字。它们使得异步代码看起来、写起来更像同步代码,从而提高了代码的可读性和可维护性。


async

async 是一个函数修饰符,用于声明一个函数是异步的。一个 async 函数总是返回一个 Promise。如果函数返回一个非 Promise 值,JavaScript 会自动将其包装在一个 Promise 中。


示例:


async function exampleAsyncFunction() {  
  return "Hello, Async!";  
}  
 
exampleAsyncFunction().then(result => console.log(result)); // 输出 "Hello, Async!"

await

await 是一个操作符,它只能在 async 函数内部使用。await 会暂停 async 函数的执行,并等待 Promise 解决(resolve)或拒绝(reject),然后恢复 async 函数的执行并返回解决的值。如果 Promise 被拒绝,await 表达式会抛出一个错误。


示例:


async function fetchData() {  
  let response = await fetch('https://api.example.com/data');  
  let data = await response.json();  
  return data;  
}  
 
fetchData().then(data => console.log(data)).catch(error => console.error(error));

在这个例子中,fetch 函数返回一个 Promise,我们使用 await 等待这个 Promise 解决,然后获取返回的响应对象。接着,我们使用 response.json() 方法(也返回一个 Promise)来获取 JSON 数据,并再次使用 await 等待这个 Promise 解决。最后,我们返回获取到的数据。


注意事项

  • await 只能在 async 函数内部使用。
  • await 会暂停 async 函数的执行,但不会阻塞整个线程或进程。JavaScript 仍然是单线程的,但 await 允许其他代码(如事件监听器或定时器回调)在 await 等待期间运行。
  • 如果在 async 函数外部使用 await,会导致语法错误。
  • 使用 try...catch 来捕获 await 表达式可能抛出的错误是一个好习惯。


相关文章
|
7月前
|
前端开发 JavaScript
Promise、async和await
Promise、async和await
67 0
|
7月前
|
前端开发 JavaScript
什么是 async、await ?
什么是 async、await ?
|
JSON 前端开发 JavaScript
async/await的应用
async/await的应用
66 0
|
前端开发 JavaScript
|
1月前
|
前端开发 JavaScript 开发者
Async 和 Await 是基于 Promise 实现
【10月更文挑战第30天】Async和Await是基于Promise实现的语法糖,它们通过简洁的语法形式,借助Promise的异步处理机制,为JavaScript开发者提供了一种更优雅、更易于理解和维护的异步编程方式。
27 1
|
1月前
|
JSON 前端开发 JavaScript
浅谈JavaScript中的Promise、Async和Await
【10月更文挑战第30天】Promise、Async和Await是JavaScript中强大的异步编程工具,它们各自具有独特的优势和适用场景,开发者可以根据具体的项目需求和代码风格选择合适的方式来处理异步操作,从而编写出更加高效、可读和易于维护的JavaScript代码。
32 1
|
7月前
|
前端开发 JavaScript 开发者
阿珊带你深入理解 async/await 函数
阿珊带你深入理解 async/await 函数
|
7月前
|
前端开发 JavaScript
async/await
async/await
40 0
|
7月前
|
JSON 前端开发 JavaScript
await
`await` 是 JavaScript 中的一个关键字,它仅在 `async` 函数内部有效。`await` 用于等待一个 `Promise` 对象解析为其完成值或拒绝值。通过使用 `await`,
67 1
|
7月前
|
前端开发 JavaScript

热门文章

最新文章