async/await的应用场景
个人理解,async/await的应用场景主要是为了解决异步多层回调嵌套的问题,举例如下:
例子 1:在第一个函数执行完之后,延迟固定秒数执行
function sleep(time) { return new Promise((resolve, reject) => { setTimeout(() => { console.log(`sleep ${time}s`); resolve(time); }, time); }); } // 目标:等待几秒后再执行下一个log,下一个log依赖上一个sleep返回的值 // 解决办法:1. promise.then 2. async/await console.log("start"); // 1. promose.then sleep(1000).then((res1) => { console.log(res1 + "log1"); // 1秒后打印 1000log1 sleep(2000).then((res2) => { console.log(res2 + "log2"); // 2秒后打印 1000log1 });
// 多层回调,如果每个异步函数都依赖上个异步函数返回的结果,且有多个,写起来将层层嵌套 }); // 2. async/await async function run() { const a = await sleep(1000); console.log(a + "log1"); // 1秒后打印 1000log1 const b = await sleep(2000); console.log(b + "log2"); // 2秒后打印 1000log1 } run();
例子 2:第二个函数执行依赖第一个函数返回的结果
function getData1() { return new Promise((resolve, reject) => { setTimeout(() => { resolve({ id: 1 }); }, 3000); }); } function getData2(id) { return new Promise((resolve, reject) => { resolve({ id: id, name: "a" }); }); } getData1().then((res) => { console.log("getData1 res", res); // 3秒后输出:getData1 res { id: 1 } getData2(res.id).then((res) => { console.log("getData2", res); // getData2 { id: 1, name: 'a' } }); }); async function getData() { let res1 = await getData1(); let res2 = await getData2(res1.id); console.log("getData2 res", res2); } getData(); // getData2 res { id: 1, name: 'a' }
分类:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2018-06-07 koa2使用阿里云oss的nodejs sdk实现上传图片