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写的一个库。


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变量

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 前端工程师因为需要操纵Ajax(Ajax的A就是Asynchronous的意思),因此,是最了解异步IO的人...
    白昔月阅读 4,027评论 1 8
  • # 模块机制 node采用模块化结构,按照CommonJS规范定义和使用模块,模块与文件是一一对应关系,即加载一个...
    RichRand阅读 2,556评论 0 3
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,642评论 2 41
  • 说明本次redis集群安装在rhel6.8 64位机器上,redis版本为3.2.8,redis的gem文件版本为...
    读或写阅读 15,253评论 3 9
  • 上了九年级,最后一节课可能会拖堂,鉴于我们老让车等,所以司机安排我们坐阎皮庄的车。 今天放学坐车回家,还没开上大公...
    清北y阅读 170评论 1 0