如何从libuv看Nodejs中的事件循环核心机制
同类问题: 解释下 event-loop 机制, 并将浏览器和Nodejs 两端的 event -loop 机制对比
Nodejs
- nodejs 有两大核心 v8 和 libuv
- libev 不支持windows 平台 遂放弃使用改用 libuv
setTimeout(() => {
console.log('timer1');
Promise.resolve().then(function () {
console.log('promise1');
})
}, 0);
setTimeout(() => {
console.log('timer2');
Promise.resolve().then(function () {
console.log('promise2');
})
}, 0);
// 浏览器中输出为:
// timer1
// promise1
// timer2
// promise2
// nodejs:输出为:
1 v10 之前:
// timer1
// timer2
// promise1
// promise2
2 v10 之后:
// timer1
// promise1
// timer2
// promise2
const fs = require('fs');
const { setImmediate } = require('timers');
fs.readFile('test.txt', () => {
console.log('readFile');
setTimeout(() => {
console.log('timeout');
}, 0)
setImmediate(() => {
console.log('immediate');
})
})
/**
* readFile
* immediate
* timeout
*/