javaScript使用async定义异步函数配合await实现请求

async 关键字主要用于异步编程,在不同的编程语言中有不同的用法。这里主要介绍 JavaScript 中的 async 关键字的作用及其详细解析。

一、JavaScript 中的 async
在 JavaScript(尤其是 ES6+)中,async 关键字用于定义异步函数,其本质是返回一个 Promise 对象。配合 await 关键字,可以编写更易读的异步代码,避免传统 callback 嵌套或 .then() 链式调用导致的“回调地狱”。

  1. 基本语法

async function fetchData() {
return “数据加载完成”;
}

fetchData().then(console.log); // 输出:数据加载完成
解析:

async 关键字使 fetchData 成为异步函数。
async 函数默认返回 Promise,即使显式返回的不是 Promise,JavaScript 也会自动封装成 Promise。
2. async 配合 await
await 关键字只能在 async 函数内部使用,它用于暂停函数执行,等待 Promise 解析完成后再继续。

async function fetchData() {
let result = await new Promise((resolve) => setTimeout(() => resolve(“数据加载完成”), 2000));
console.log(result);
}

fetchData();
解析:

await 让 fetchData 在 Promise 解析完成后才继续执行,而不会阻塞整个 JavaScript 线程(由于事件循环机制)。
setTimeout 模拟耗时操作,fetchData 需要等待 2 秒后再打印 “数据加载完成”。
3. 处理异常
在 async/await 代码中,可以使用 try…catch 处理异常,避免 Promise.catch() 方式的复杂性。

async function fetchData() {
try {
let result = await Promise.reject(“加载失败”);
console.log(result);
} catch (error) {
console.error(“发生错误:”, error);
}
}

fetchData();
解析:

Promise.reject(“加载失败”) 模拟请求失败的情况。
try…catch 捕获 await 语句中的异常,防止程序崩溃。
4. async 函数并行执行
如果 await 在循环中被滥用,可能会导致性能问题。例如:

async function sequentialRequests() {
await fetch(“https://api.example.com/data1”);
await fetch(“https://api.example.com/data2”);
}
问题:

fetch(“data1”) 结束后才执行 fetch(“data2”),两者是串行执行,导致总耗时较长。
优化方式是并行执行:

async function parallelRequests() {
let [data1, data2] = await Promise.all([
fetch(“https://api.example.com/data1”),
fetch(“https://api.example.com/data2”),
]);
}
优化:

Promise.all() 让两个请求同时发出,减少整体等待时间,提高效率。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值