NodeJs 做了什么 Fundamentals Internals

NodeJs 做了什么

code

node 代码实现

libuv 库代码实现

sync vs async

javascript 复制代码
// sync

console.log('🐰 win!');

console.log('🐢 win!');

 

// async

setTimeout(() => {

console.log('🐰 win!');

},1000)

console.log('🐢 win!');

non-blocking functions 非阻塞函数

async js ?

异步操作

线程 threads

两个线程在执行方面是互相独立的

node is single thread

nodejs 如何实现异步功能的?

event loop + libuv (deal file + network 调用操作系统功能)

Event Loop

顺便提一下 python 和 php 都可支持多线程

什么时候 使用 Node 最好

javascript 复制代码
// 1 base

// const EventEmitter = require('events')

// const celebrity = new EventEmitter()

 

// // 监听

// celebrity.on('race win', () => {

// console.log('you has win best!');

// })

 

// celebrity.on('race fail', () => {

// console.log('can do better!');

// })

 

// // 触发

// celebrity.emit('race win')

// celebrity.emit('race fail')

 

// 2 advantage 传递 参数

const EventEmitter = require('events')

const celebrity = new EventEmitter()

 

celebrity.on('race', (result) => {

if(result === 'win'){

console.log('win your best!');

}

})

 

celebrity.on('race', (result) => {

if(result === 'lost'){

console.log('can do better!');

}

})

 

celebrity.emit('race', 'win')

celebrity.emit('race', 'lost')
相关推荐
wulijuan88866625 分钟前
ECharts图表性能优化的那些事
前端·javascript·echarts
❀͜͡傀儡师31 分钟前
通过npm 手动安装、Docker 部署 OpenClaw小龙虾
前端·docker·npm
前端AI充电站36 分钟前
Google 开始卷价格了:Gemini 3.1 Flash-Lite,会不会把 AI 应用成本真的打下来?
前端·人工智能
风止何安啊41 分钟前
数字太长看花眼?一招教它排好队:千分位处理的实现
前端·javascript·面试
沙包大的拳头42 分钟前
扩展运算符无法克隆 getBoundingClientRect() 获取的值
前端·javascript
忆江南1 小时前
# Flutter 语音房礼物下载方案(完整版)
前端
悟空瞎说1 小时前
React 19 带来了诸多创新
前端·react.js
im_AMBER1 小时前
高并发下的列表乱序与文档同步
前端·react.js·架构
前进的李工1 小时前
LangChain使用之Model IO(提示词模版之ChatPromptTemplate)
java·前端·人工智能·python·langchain·大模型