web前端全系列 教程
1839个小节阅读:2243.2k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Node.js
的事件循环阐明了Node.js
如何做到异步且具有非阻塞的 I/O。
调用堆栈
调用堆栈是一个 LIFO 队列(后进先出)。
事件循环不断地检查调用堆栈,以查看是否需要运行任何函数。
xconst bar = () => console.log('bar')
const baz = () => console.log('baz')
const foo = () => {
console.log('foo')
bar()
baz()
}
foo()
//foo
//bar
//baz
xxxxxxxxxx
const bar = () => console.log('bar')
const baz = () => console.log('baz')
const foo = () => {
console.log('foo')
setTimeout(bar, 0)
baz()
}
foo()
//foo
//baz
//bar
消息队列
当调用 setTimeout() 时, Node.js 会启动定时器。 当定时器到期时,则回调函数会被放入消息队列
中。包括其它的一些异步的操作,网络请求或者一些事件的订阅,得到响应后它们的回调函数也会被放入消息队列
。
事件循环会赋予调用堆栈优先级,它首先处理在调用堆栈中找到的所有东西,一旦其中没有任何东西,便开始处理消息队列中的东西。
实时效果反馈
1.下列说法正确的是:
A 事件循环机制确保了Node.js
可以非阻塞的执行异步操作
B 事件循环先去执行消息队列里的函数
C Node.js
不能同时接受多个异步操作,否则会阻塞甚至崩溃
D 消息队列里的函数永远不会被调用
答案
1=>A