async/await
是 JavaScript 中用于处理异步操作的一种语法糖,引入了在异步代码中使用同步风格的语法。async
函数返回一个 Promise 对象,而 await
表达式可以在 async
函数内等待一个 Promise 对象的解决或拒绝。
下面是 async/await
的主要工作原理:
async
函数: 使用async
关键字声明的函数被称为异步函数。异步函数内部可以包含await
表达式,而await
表达式可以放在任何返回 Promise 的函数前面。async function fetchData() { // 异步操作 return somePromise; }
await
表达式:await
用于等待一个 Promise 对象的解决或拒绝。在await
表达式后面的表达式会被包装成一个 Promise 对象,然后等待这个 Promise 对象的状态变化。async function example() { const result = await fetchData(); // 等待 fetchData() 的解决 console.log(result); }
在上面的例子中,
example
函数会暂停执行,直到fetchData
返回的 Promise 对象解决。一旦 Promise 解决,result
将被赋值为解决的结果,然后程序继续执行。异步执行:
async
函数的执行是异步的,它不会阻塞其他代码的执行。当await
表达式等待一个 Promise 时,async
函数会挂起,并允许事件循环执行其他任务。错误处理: 使用
try/catch
块来处理await
表达式中的 Promise 解决时可能出现的错误。async function example() { try { const result = await fetchData(); console.log(result); } catch (error) { console.error(error); } }
如果
fetchData
返回的 Promise 被拒绝,错误将被捕获并在catch
块中处理。
async/await
的主要目的是简化异步代码的编写,使其更具可读性。它可以替代传统的 Promise 链式调用,让开发者更容易理解和维护异步代码。需要注意的是,async/await
只能在异步函数内使用。