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')