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')
相关推荐
爱分享的鱼鱼2 小时前
Pinia 数据跨组件共享机制与生命周期详解
前端
张元清2 小时前
大白话讲 React2Shell 漏洞:智能家居的语音助手危机
前端·javascript·react.js
wuhen_n2 小时前
手写符合A+规范的Promise
前端
小明记账簿_微信小程序2 小时前
一篇文章教会你接入Deepseek API
前端
zhengfei6112 小时前
开源 OSINT 图探索工具
开源
若凡SEO2 小时前
深圳优势产业(电子 / 机械)出海独立站运营白皮书
大数据·前端·搜索引擎
踢球的打工仔2 小时前
typescript-void和never
前端·javascript·typescript
hugo_im2 小时前
GrapesJS 完全指南:从零构建你的可视化拖拽编辑器
前端·javascript·前端框架
用户904706683572 小时前
nuxt 路由一篇讲清楚
前端