JavaScript 什么是事件循环

JavaScript 什么是事件循环

JavaScript 是一种单线程异步编程语言。但是这是什么意思?我们一直在谈论的 JavaScript 中的事件循环是什么?

当我们说 JavaScript 是单线程时,我们是什么意思?

这意味着 JavaScript 代码运行所在的主线程以一行一行的方式运行,并且没有可能并行运行代码。

JavaScript 什么是事件循环

示例:

console.log("Before delay");
 
function delayBySeconds(sec) {
   let start = now = Date.now()
   while(now-start < (sec*1000)) {
     now = Date.now();
   }
}
 
delayBySeconds(5);
 
// Executes after delay of 5 seconds
console.log("After delay");

输出:

Before delay
(... waits for 5 seconds)
After delay

JavaScript中的内存分配:

1)堆内存: 数据以随机方式存储和分配内存。

JavaScript 什么是事件循环

2)堆栈内存: 以堆栈形式分配的内存。主要用于函数。

JavaScript 什么是事件循环

调用堆栈功能: 调用堆栈是一个用于在运行时跟踪所有其他函数执行情况的函数。你是否在JavaScript中遇到错误时看到过堆栈跟踪的信息被打印出来?那不过是当错误发生时当前函数堆栈的快照。

示例:

function LevelTwo() {
   console.log("Inside Level Two!")
}
 
function LevelOne() {
   LevelTwo()
}
 
function main() {
   LevelOne()
}
 
main()

JavaScript 什么是事件循环

函数执行的顺序,即在函数的目的完成后从堆栈中弹出,如下所示:

JavaScript 什么是事件循环

事件循环: 事件循环是一种当函数栈变为空时,从队列中取出内容并放入函数执行栈中的机制。

JavaScript 什么是事件循环

事件循环是JavaScript通过单线程给我们提供多线程的幻觉的秘密。下面的幻觉很好地演示了事件循环的功能:

JavaScript 什么是事件循环

在执行SetTimeOut()和Web API进行所述等待时,事件队列中的回调函数尚未运行,并等待其进入堆栈的时间。当函数堆栈为空时,函数将加载到堆栈上,如下所示:

JavaScript 什么是事件循环

这就是事件循环的作用,它从事件队列中获取第一个事件,并将其放置在堆栈中,也就是在这种情况下是回调函数。从这里开始,该函数会执行并调用其中的其他函数(如果有的话)。

JavaScript 什么是事件循环

这个循环被称为 事件循环 ,这是JavaScript管理事件的方式。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程