首页 > web前端 > js教程 > 了解 JavaScript 事件循环(变得简单)

了解 JavaScript 事件循环(变得简单)

Susan Sarandon
发布: 2024-12-24 11:04:11
原创
643 人浏览过

Understanding the JavaScript Event Loop (Made Simple)

了解 JavaScript 事件循环(变得简单)

JavaScript 事件循环 使 JavaScript 中的异步编程成为可能。简单解释一下!


?关键概念

1. 单线程

JavaScript 只能一次做一件事,因为它是单线程的。

console.log("Task 1");
console.log("Task 2");
登录后复制

?输出:

Task 1
Task 2
登录后复制

2. 同步与异步

  • 同步任务:按顺序依次运行。
  • 异步任务:不阻塞主线程;他们等到准备好逃跑。
console.log("Start");

setTimeout(() => {
  console.log("Async Task");
}, 1000);

console.log("End");
登录后复制

?输出:

Start
End
Async Task
登录后复制

?事件循环如何工作

  1. 调用堆栈

    • 任务一一执行的地方
    • 当函数运行时,它会被添加到堆栈中。完成后,它会被删除。
  2. Web API

    • 异步任务(如setTimeout)在这里处理。他们在后台等待。
  3. 回调队列

    • 异步任务完成后,其回调将添加到队列中。
  4. 事件循环

    • 事件循环检查:
      1. 调用堆栈是否为空
      2. 如果是,它会从回调队列中获取任务并将它们推入堆栈。

✨ 示例:一步一步

console.log("Start");

setTimeout(() => {
  console.log("Timeout Task");
}, 2000);

console.log("End");
登录后复制

1️⃣ 调用堆栈

Step Call Stack Notes
1 console.log Logs "Start"
2 setTimeout Registers timeout task
3 console.log Logs "End"

2️⃣ 网络 API

  • setTimeout 转移到 Web API 并启动计时器。

3️⃣ 回调队列

  • 2000ms 后,回调 (() => console.log("Timeout Task")) 移至队列。

4️⃣ 事件循环

  • 事件循环检查调用堆栈是否为空。
  • 回调被移动到堆栈并执行。

?最终输出:

Start
End
Timeout Task
登录后复制

?可视化事件循环

要真正了解事件循环,请查看以下资源:

  • 放大镜
  • MDN:并发模型

编码愉快! ?

以上是了解 JavaScript 事件循环(变得简单)的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板