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

第五章:异步幻境 · 时间与数据的秘密

剧情引入:时间停滞的幻境

林昊刚刚从 DOM 迷宫脱身,便坠入了一个灰白色的世界。这里的时间仿佛冻结,所有的操作延迟发生。面前的任务板显示:

“你点击了按钮,却没有立刻响应;你请求数据,却久久没有返回。这就是——异步幻境。”

导师零号缓缓出现,身后漂浮着数个时间齿轮和数据流动的幻象。


同步 vs 异步:你必须等待?

同步(Synchronous):

代码一行一行地执行,前一行没执行完,下一行不会动。

console.log("1");
console.log("2");
console.log("3");

输出:1 2 3

异步(Asynchronous):
某些操作可能延迟一段时间,比如网络请求、定时器。这些不会阻塞主线程,会“以后再回来”。

console.log("1");
setTimeout(() => {console.log("2");
}, 1000);
console.log("3");

输出:1 3 2

时间,是一条可以被跳过的线索。” 零号导师说。


setTimeout & setInterval:时间控制术

林昊抬手召唤一块沙漏,导师讲解:

设置一次性延迟:

setTimeout(() => {console.log("一秒后执行");
}, 1000);

设置循环执行:

setInterval(() => {console.log("每隔两秒执行一次");
}, 2000);

clearTimeout() 与 clearInterval() 可用于停止执行。


回调函数 Callback:信使之术

林昊遇见一个封闭大门,门上刻着“先做完 A,再做 B”。

导师提示:

function doSomething(callback) {console.log("正在处理任务 A...");setTimeout(() => {console.log("任务 A 完成!");callback(); // 通知完成}, 1000);
}doSomething(() => {console.log("开始任务 B!");
});

回调是任务完成后的通知器。 但回调多层嵌套,会陷入“回调地狱”。


Promise:时间的契约

一位身披蓝光的 NPC 向林昊递出一封契约——这就是 Promise。

const p = new Promise((resolve, reject) => {setTimeout(() => {const success = true;if (success) resolve("成功了!");else reject("失败了!");}, 1000);
});p.then(result => {console.log("结果:", result);
}).catch(error => {console.log("错误:", error);
});

.then() 是成功的响应
.catch() 是失败的处理
Promise 可以链式调用,避免层层嵌套


async/await:时间暂停术

林昊获得“时间暂停之眼”,能让异步代码写得像同步:

function delay(ms) {return new Promise(resolve => setTimeout(resolve, ms));
}async function run() {console.log("准备...");await delay(1000);console.log("一秒后执行");await delay(2000);console.log("再等两秒,完成!");
}run();

async 表示函数是异步的
await 会暂停代码,等待 Promise 完成再继续


🎯 本章总结:异步核心概念

概念说明
setTimeout延迟执行一次
setInterval每隔一段时间执行
回调函数任务完成后执行的函数
Promise代表未来值的对象,可链式调用
async/await让异步逻辑更清晰,像同步代码一样写

🧩 本章练习任务

  1. 使用 setTimeout 模拟“3秒后跳出提示框”;
  2. 封装一个 wait(ms) 函数,使用 Promise;
  3. 尝试用回调、Promise、async/await 写出一样的“做饭三步曲”:洗菜、炒菜、吃饭;
  4. 使用 fetch() 请求一个公共 API(如 JSONPlaceholder),并用 async/await 获取并显示数据。

🔮 预告:第六章《事件风暴 · 用户的意志》

林昊即将进入下一试炼:理解并响应“用户的意志”——点击、输入、提交、移动,所有交互的核心——事件系统,即将来袭!

http://www.xdnf.cn/news/595603.html

相关文章:

  • STM32之温湿度传感器(DHT11)
  • 纯惯导(INS)的误差来源及其对静态漂移曲线的影响
  • SS928V100(Hi3403V100)----NNN推理引擎,AMCT-ONNX模型压缩量化踩坑记录(LINUX版)
  • 数据指标体系:企业数字化转型的“数字基因“革命
  • Even Split_CodeForces - 1666E分析与解答
  • 【三轴加速度计】QMA6100P数据手册解析
  • 基于RFSOC49DR-16收16发 PCIE4.0 X8 射频采集卡
  • 航电系统之云台检测技术篇
  • 5月22总结
  • 浅聊一下搭建企业私有知识库的可行方案
  • Springboot3
  • mapbox V3 新特性,实现三维等高线炫酷效果
  • Linux(Ubuntu)新建文件权限继承问题
  • MQTT-主题(Topic)
  • DeepSeek:以开源之力,引领AI技术新风潮
  • MySQL初阶:JDBC
  • 海盗王客户端创建角色遮罩层修改成自适应窗口尺寸
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.10)
  • QT入门基础
  • python训练营打卡第31天
  • 【C++】控制台小游戏
  • 【人工智能】低代码基础技术讲解,规则引擎,在低代码平台上的作用,有哪些规则引
  • 前端请求状态出现CORS错误
  • CarPlay有线连接流程
  • 陕西安全员考试报名流程是怎样的?
  • 【Python3教程】Python3 文件(File)方法详解
  • 谷歌开源医疗领域多模态生成式AI模型:medgemma-4b-it
  • 完全禁用 Actuator 功能
  • 6个月Python学习计划 Day 1
  • Baklib企业知识中台AI实践