133 lines
2.8 KiB
JavaScript
133 lines
2.8 KiB
JavaScript
// const start = Date.now(); // 获取当前的时间戳
|
||
|
||
// setTimeout(function fn1() {
|
||
// console.log('setTimeout', Date.now() - start);
|
||
// }, 200)
|
||
|
||
// const fs = require('fs');
|
||
// fs.readFile('./index.js', 'utf-8', function f2() {
|
||
// console.log('文件读取结束');
|
||
// const start = Date.now();
|
||
// // 强行延时 500 毫秒
|
||
// while (Date.now() - start < 500) { }
|
||
// })
|
||
// fs.readFile('./index.js', 'utf-8', function f2() {
|
||
// console.log('文件读取结束2');
|
||
// const start = Date.now();
|
||
// // 强行延时 500 毫秒
|
||
// while (Date.now() - start < 500) { }
|
||
// })
|
||
|
||
// timer 队列:setTimeout
|
||
// poll 队列:readFile
|
||
|
||
// check 阶段
|
||
|
||
// console.log('start');
|
||
// setTimeout(()=>{
|
||
// console.log('timer1');
|
||
// Promise.resolve().then(function(){
|
||
// console.log('promise1');
|
||
// })
|
||
// },0)
|
||
// setTimeout(()=>{
|
||
// console.log('timer2');
|
||
// Promise.resolve().then(function(){
|
||
// console.log('promise2');
|
||
// })
|
||
// },0)
|
||
// Promise.resolve().then(function(){
|
||
// console.log('promise3');
|
||
// })
|
||
// console.log('end');
|
||
|
||
// Promise 会被放入到微任务队列
|
||
// 会先清空微任务队列,再执行其他任务队列的回调任务
|
||
// start
|
||
// end
|
||
// promise3
|
||
// timer1
|
||
// promise1
|
||
// timer2
|
||
// promise2
|
||
|
||
// timer :
|
||
// 微任务:
|
||
|
||
// setTimeout(function timeout() {
|
||
// console.log('timeout');
|
||
// }, 0);
|
||
// setImmediate(function immediate() {
|
||
// console.log('immediate');
|
||
// });
|
||
|
||
// const fs = require('fs');
|
||
// fs.readFile('./index.js', 'utf-8', function () {
|
||
// setTimeout(() => {
|
||
// console.log('timeout');
|
||
// }, 0)
|
||
// setImmediate(function immediate() {
|
||
// console.log('immediate');
|
||
// });
|
||
// })
|
||
|
||
// setTimeout(() => {
|
||
// console.log('timer1')
|
||
// Promise.resolve().then(function () {
|
||
// console.log('promise1')
|
||
// })
|
||
// }, 0)
|
||
// process.nextTick(() => {
|
||
// console.log('nextTick')
|
||
// process.nextTick(() => {
|
||
// console.log('nextTick')
|
||
// process.nextTick(() => {
|
||
// console.log('nextTick')
|
||
// process.nextTick(() => {
|
||
// console.log('nextTick')
|
||
// })
|
||
// })
|
||
// })
|
||
// })
|
||
|
||
// nextTick
|
||
// nextTick
|
||
// nextTick
|
||
// nextTick
|
||
// timer1
|
||
// promise1
|
||
|
||
|
||
// timers : setTimeout
|
||
// 微任务队列:
|
||
|
||
setTimeout(()=>{
|
||
console.log('timer1')
|
||
Promise.resolve().then(function() {
|
||
console.log('promise1')
|
||
})
|
||
process.nextTick(() => {
|
||
console.log('nexttick');
|
||
})
|
||
}, 0)
|
||
setTimeout(()=>{
|
||
console.log('timer2')
|
||
Promise.resolve().then(function() {
|
||
console.log('promise2')
|
||
})
|
||
}, 0)
|
||
|
||
// 证明 nextTick 和 Promise 都是放入微任务队列
|
||
// 但是前者比后者的优先级高
|
||
|
||
|
||
// timer:setTimeout2
|
||
// 微任务:
|
||
|
||
// timer1
|
||
// nexttick
|
||
// promise1
|
||
// timer2
|
||
// promise2
|
||
|