Node IO 函数编程在Node的应用

什么是IO?
访问网站,输入地址吐出一个IO

前端通过异步IO可以消除UI堵塞
假设请求资源A的时间为M,请求资源B的时间为N。那么同步的请求耗时为M+NN,如果采用异步方式占用时间为Max(M,N)
随着业务的复杂,会引入分布式系统,时间回线性的增加,M+N+... 和Max(M,N···),这会放大同步和异步之间的诧异
I/O是昂贵的,分布式I/O是更昂贵的
CPU时钟周期:1/cpu主频
根据情况选择同步还是异步,没有谁最好;它们是相辅相成的。

NodeJS适用于IO密集型,不适用CPU密集型

node虽然是单线程,但是有辅助线程,
Libuv(需要会C的知识)
封装了window、Linux操作系统,用V8 node写的一个库。


Node IO 函数编程在Node的应用_第1张图片
image.png

有几个特殊的API
1、setTimeout\setInterval 线程池不参与
2、process.nextTick() 实现类似
setTimeout(function(){},0);每次调用放在队列中,在下一轮循环中取出
3、setImmediate();比process.nextTick()优先级低
4、Node如何实现一个Sleep?
async function test(){
console.log("hello");
await sleep(1000);
console.log("world!");
}
function sleep(ms){
return new Promise(resolve => setTimeout(resolve,ms))
}
test();

函数式编程在Node中的应用
1、高阶函数:可以将函数作为输入或者返回值,形成一种后续传递风格的结果接受方式,而非单一的返回值形式。后续传递风格的程序将函数业务重点从返回值传递到回调函数种。
app.use(function(){//todo})
var emitter =new events.EventEmitter;
emitter.on(function(){//`````````.todo})
2、 偏函数:指定部分参数产生一个新的定制函数的形式就是偏函数。Node中异步编程非常常见,我们通过烧饼变量会很容易造成业务的混乱。underscore,after变量

你可能感兴趣的:(Node IO 函数编程在Node的应用)