微任务>宏任务>混合随机 'abc'[0] ====>'a'

io操作

高性能服务器

如果大量的io操作 更适合node

计算操作不适合

线程池

cpu密集不适合 文件读写等

多线程会遇到锁的问题同时执行多个任务 切换时间片也会浪费时间

 

node不需要锁的问题

同步和异步(被调用者)

阻塞非阻塞(调用者)

聊天服务器 电子商务网站

node 直接调用gloabal上的属性

node 中gloable和this不相等

this是node运行文件时修改了this指向

var a=1

global.a 输出的结果是undefined

buffer 缓存区

process 进程

setTimeout

console.log

显示隐藏属性

connsole.dir(golbal,{showHidden:true})

process.stout.write('hello')

等价于console.log

console.time(‘start’)

console.timeEnd‘start’)

掐时间用的

console.assert()// 断言

process.cwd()// 查看当前路径

// 当前目录

process.chdir('4.node')

//改变当前路径

process.argv 参数

node 1.js haha haha haj

haha就是参数

node 1.js --port 3000 --color red

commander 把用户执行node时候传递的参数变成对象

process.argv.slice(2

)

放到数组里

slice 2 前两个不要

[--port,3000,--color,red]===>{port:3000,color:red}

let yargs = process.argv.slcie(2).reduce((prev,next,index,arr)=>{

if(next.includes('--')){

prev[next.slice(2)]===arr[index+1]

}

return prev

},{})

传递初始值{} 迭代器的第一个参数

 

env

set KEY = VALUE &&node 1.js

process.env.NODE_ENV

cross_env 解决linux export 和mac window的差异 设置环境变量

process.nextTick微任务

promise.resolve().then(()=>{

})

process.nextTick(()=>{

})

nextTick 比promsie先输出

不要写递归

很多时候我们希望调用完同步代码之后再执行某些事

class Eat(){

constructor(){

this.arr = []

process.nextTick(()=>{

// 同步执行后执行 拿到最终的输出

console.log(this.arr)

})

}

eat(type){

this.arr.push(type)

}

}

let e = new Eat()

e.eat('韩寒")

e.eat('火腿")

timeout setImmediate 这两个的执行顺序是不一定的

写setTimeout 0 其实是4ms

node准备执行的时候 可能是小于4ms

Promise.resolve().then(data=>{

console.log('promise1');

setTimeout(()=>{

console.log('ttimeout2')

},1000);

})

setTimeout(()=>{

console.log('timeout1')

Promise.resolve().then(data=>{

console.log('promise2')

})

},1000)

 

Promise.resolve().then(data=>{

console.log('promise1');

setTimeout(()=>{

console.log('ttimeout2')

},1000);

})

promise1>timout1>promise2>timeout2

promise1>timout1>timeout2>promise2

两种可能性

口诀:c

面试题:

fs.readFile('4.node/note.md',(err,data)=>{

setTimeout(()=>{

console.log('timeout2')

},0)

setImmediate(()=>{

console.log('setImmediate')

})

// 先走setImmediate( 后走timeout

poll轮训阶段等待到了时间再执行 走check 就是setImmediate

 

})

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值