什么是 async 函数
async 函数是 ES8 新增的一种函数类型,用于简化异步操作的代码实现。它是基于 Promise 的语法糖,可以使异步操作的代码更加简洁易懂。async 函数的特点如下:
- async 函数总是返回一个 Promise 对象,可以使用 then 方法进行链式调用。
- async 函数内部可以使用 await 关键字,用于等待一个 Promise 对象的返回结果。
- async 函数内部可以使用 try-catch 语句,用于捕获异步操作中的错误。
async 函数的语法
async 函数的语法如下:
async function functionName (arguments) { // 函数体 }
其中,functionName 是函数名,arguments 是函数的参数列表。
async 函数的使用
以下是一个使用 async 函数的示例代码:
async function getData () { const response = await fetch('https://api.github.com/users'); const data = await response.json(); return data; } getData().then(data => console.log(data));
在上面的代码中,我们定义了一个名为 getData 的 async 函数,函数内部使用了两个 await 关键字来等待异步操作的返回结果。fetch 函数用于获取数据,返回的是一个 Promise 对象,我们使用 await 关键字来等待其返回结果。response.json() 也返回一个 Promise 对象,同样使用 await 关键字来等待其返回结果。最终,我们将获取到的数据返回出去,并使用 then 方法进行链式调用。
async 函数的错误处理
async 函数内部可以使用 try-catch 语句,用于捕获异步操作中的错误。以下是一个使用 try-catch 语句的示例代码:
// javascriptcn.com 代码示例 async function getData () { try { const response = await fetch('https://api.github.com/users'); const data = await response.json(); return data; } catch (error) { console.log(error); } } getData();
在上面的代码中,我们使用 try-catch 语句来捕获异步操作中的错误。如果 fetch 函数或 response.json() 函数返回了错误信息,就会进入 catch 语句中,并输出错误信息。
async 函数的其他用法
并行执行多个异步操作
使用 Promise.all 方法可以并行执行多个异步操作,以下是一个示例代码:
// javascriptcn.com 代码示例 async function getData () { const [users, repos] = await Promise.all([ fetch('https://api.github.com/users').then(response => response.json()), fetch('https://api.github.com/repositories').then(response => response.json()) ]); return { users, repos }; } getData().then(data => console.log(data));
在上面的代码中,我们使用 Promise.all 方法来并行执行两个异步操作,并将它们的返回结果存储在 users 和 repos 变量中,最终将它们作为一个对象返回出去。
串行执行多个异步操作
使用 async 函数的串行执行多个异步操作也非常简单,只需要将多个异步操作放在一个 for 循环中即可,以下是一个示例代码:
// javascriptcn.com 代码示例 async function getData () { const urls = ['https://api.github.com/users', 'https://api.github.com/repositories']; const results = []; for (let i = 0; i < urls.length; i++) { const response = await fetch(urls[i]); const data = await response.json(); results.push(data); } return results; } getData().then(data => console.log(data));
在上面的代码中,我们使用 for 循环来串行执行两个异步操作,并将它们的返回结果存储在一个数组中,最终将这个数组返回出去。
总结
async 函数是 ES8 新增的一种函数类型,用于简化异步操作的代码实现。它是基于 Promise 的语法糖,可以使异步操作的代码更加简洁易懂。async 函数的特点是返回一个 Promise 对象,内部可以使用 await 关键字等待异步操作的返回结果,也可以使用 try-catch 语句捕获异步操作中的错误。async 函数还可以用于并行执行多个异步操作和串行执行多个异步操作。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65581e73d2f5e1655d25813c