当前位置: 首页 > news >正文

JS 异步 从零讲(大白话 + 真实场景 + 可运行案例)

按顺序:回调函数 → Promise → async/await,工作最常用,直接上手。

1. 回调函数(最原始,缺点:回调地狱)

2. Promise(解决回调地狱,链式调用)

new Promise((resolve, reject) => { //异步操作 //成功 resolve(数据) // 失败 reject(错误) }) .then((res) => { //成功处理 }) .catch((err) => { //失败处理 });

真实场景 封装定时器异步

function fn(msg, delay) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(msg); }, delay); }); }

链式调用

fn("第一步", "1000") .then((res) => { console.log(res); return fn("第二步", 1000); }) .then((res) => { console.log(res); return fn("第三步", 1000); }) .then((res) => console.log(res));

常用静态方法

Promise.all([p1,p2,p3]):全部成功才成功(并行请求)

Promise.race([p1,p2]):谁先完成取谁

并行 2 个接口,同时发请求

Promise.all([fn("A", 1000), fn("B", 2000)]).then((res) => { console.log(res, "Promise.all"); });

3. async /await(终极写法,最舒服,项目必用)

async function 函数名(){

const 结果 = await Promise对象;

}

上面的定时器 用async/await 重写

function fnawait(msg, delay) { return new Promise((resolve, reject) => { setTimeout(() => resolve(msg), delay); }); } async function run() { const r1 = await fnawait("1", 1000); console.log(r1); const r2 = await fnawait("2", 1000); console.log(r2); const r3 = await fnawait("3", 1000); console.log(r3); } run();

捕获错误(try/catch)

async function runDetails() { try { const res = await fn("第一步", 1000); console.log(res); } catch (err) { console.log("出错了", err); } } runDetails();

一句话总结:

1.回调:嵌套地狱,不用

2.Promise:链式,解决嵌套

3.async/await 最简

完整代码:

<!doctype html> <html lang="zh-CN"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>练习</title> </head> <body> <div id="content"></div> <script> console.log("--- JS 异步 从零讲(大白话 + 真实场景 + 可运行案例) ---"); //按顺序:回调函数 → Promise → async/await,工作最常用,直接上手。 //1. 回调函数(最原始,缺点:回调地狱) // 2. Promise(解决回调地狱,链式调用) new Promise((resolve, reject) => { //异步操作 //成功 resolve(数据) // 失败 reject(错误) }) .then((res) => { //成功处理 }) .catch((err) => { //失败处理 }); //真实场景 封装定时器异步 function fn(msg, delay) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(msg); }, delay); }); } // 链式调用 fn("第一步", "1000") .then((res) => { console.log(res); return fn("第二步", 1000); }) .then((res) => { console.log(res); return fn("第三步", 1000); }) .then((res) => console.log(res)); // 常用静态方法 // Promise.all([p1,p2,p3]):全部成功才成功(并行请求) // Promise.race([p1,p2]):谁先完成取谁 // 并行 2 个接口,同时发请求 Promise.all([fn("A", 1000), fn("B", 2000)]).then((res) => { console.log(res, "Promise.all"); }); // 3. async /await(终极写法,最舒服,项目必用) // async function 函数名(){ // const 结果 = await Promise对象; // } // 上面的定时器 用async/await 重写 function fnawait(msg, delay) { return new Promise((resolve, reject) => { setTimeout(() => resolve(msg), delay); }); } async function run() { const r1 = await fnawait("1", 1000); console.log(r1); const r2 = await fnawait("2", 1000); console.log(r2); const r3 = await fnawait("3", 1000); console.log(r3); } run(); // 捕获错误(try/catch) async function runDetails() { try { const res = await fn("第一步", 1000); console.log(res); } catch (err) { console.log("出错了", err); } } runDetails(); // 一句话总结: //1.回调:嵌套地狱,不用 //2.Promise:链式,解决嵌套 //3.async/await 最简 </script> </body> </html>
http://www.jsqmd.com/news/858298/

相关文章:

  • 2026年磁悬浮压缩机厂家怎么选?华东风机节能定制方案领跑行业 - 速递信息
  • KV Cache优化到底怎么让推理提速10倍的?我拆给你看
  • 南阳黄金回收白银回收铂金回收钻石回收贵金属回收本地排名正规门店专业推荐哪家靠谱二手哪家强 - 检测回收中心
  • 如何快速构建ChromeKeePass:开源密码自动填充扩展的完整开发指南
  • 终极指南:如何用猫抓Cat-Catch浏览器扩展实现专业级资源嗅探与流媒体下载
  • 终极免费指南:如何在GTA V中安全使用YimMenu开源模组菜单提升游戏体验
  • 金昌黄金吊坠回收同城白银回收同城铂金回收钻石首饰回收本地贵金属回收高价多少钱一克同城价格查询上门上门估价闲置变现转让靠谱权威排行榜 - 检测回收中心
  • 自动化测试常用函数(操作测试对象)
  • 南阳黄金戒指回收白银首饰回收高价铂金回收品牌钻戒回收二手白银回收本地排名正规门店专业推荐哪家靠谱二手哪家强 - 检测回收中心
  • Aimmy终极指南:为不同游戏选择最佳AI瞄准模型的完整方案
  • 3步完成Honey Select 2中文汉化:免费补丁终极安装指南
  • 三分查找经典实例分析与学习
  • 金昌黄金回收白银回收铂金回收钻石回收贵金属回收本地排名正规门店专业推荐哪家靠谱二手哪家强 - 检测回收中心
  • 避开这些坑!在ZedBoard上为AD9361配置No-OS驱动与Vivado工程的完整流程
  • 例行公事
  • 智读致用|《谷歌亚马逊如何做产品》6|赢在数据驱动:抓住核心指标,就能让产品“开口说话”
  • 拒绝踩坑:视窗反应釜哪家技术强、质量好且售后有保障? - 品牌推荐大师
  • 二代壳脱壳新思路:Hook CreateFromRawDexFile捕获原始DEX
  • 2026 肇庆专业防水公司TOP5推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐(2026年5月肇庆最新深度调研方案) - 防水百科
  • RAG上下文压缩:一个让Token消耗直接砍半的骚操作
  • OmenSuperHub:5个步骤让你的惠普游戏本性能翻倍,告别臃肿官方软件
  • 河北骏众教育
  • 金昌千足金回收银项链回收铂金首饰回收裸钻回收闲置首饰回收高价多少钱一克同城价格查询上门上门估价闲置变现转让靠谱权威排行榜 - 检测回收中心
  • 2026 来宾专业防水公司TOP5推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐(2026年5月来宾最新深度调研方案) - 防水百科
  • AICoverGen完整教程:3步打造专属AI翻唱音乐的免费终极方案
  • 从“数据盲区”到“精准治校”:纪律高危型学生行为画像实证分析
  • 2026年一体化泵站实力厂商:河北保聚玻璃钢制品有限公司,一体化雨水/预制/提升泵站一站式直供 - 泵站报价15613348888
  • 百度文库纯净打印终极指南:如何一键去除广告并保存完美PDF文档
  • 如何用html2image实现高效HTML转图片:Python开发者完全指南
  • 三步解锁:开源AI编程工具的免费共享方案