|   761(字)

HTTP概念进阶

HTTP概念进阶

Nodejs中http模块不解析请求的具体内容,只分离出请求头和请求体
1、什么是回调函数?
回调试异步编程时的基础,将后续逻辑封装成起始函数的参数,逐层嵌套
2、什么事同步/异步?
同步:发送方发送数据后,等待接收方发回响应以后才发下一个数据包的通讯方式
异步:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式
3、什么事I/O?
磁盘的写入(in)磁盘的读取(out)
4、什么是单线程/多线程?
一次只能执行一个程序叫做单线程
一次能执行多个程序叫做多线程
5、什么是阻塞/非阻塞?
阻塞:前一个程序未执行完就得一直等待
非阻塞:前一个程序未执行完时可以挂起,继续执行其他程序,等到使用时再执行
6、什么是事件?
一个触发动作(例如点击按钮)
7、什么是事件驱动?
一个触发动作引起的操作(例如点击按钮后弹出一个对话框)
8、什么是基于事件驱动的回调?
为了某个事件注册了回调函数,但是这个回调函数不是马上执行,只有当事件发生的时候,才会调用回掉函数,这种函数执行的方式叫做事件驱动~这种注册回掉就是基于事件驱动的回调,如果这些回调和异步I/O(数据写入、读取)操作相关,可以看作是基于回调的异步I/O。只不过这种回调在nodejs中是有事件来驱动的
9、什么是事件循环?
事件循环Eventloop,倘若有大量的异步操作,一些I/O的耗时操作,甚至是一些定时器控制的延时操作,它们完成的时候都要调用相应的回调函数,而从完成一些密集的任务,而又不会阻塞整个程序执行的流程,此时需要一种机制来管理,这种机制叫做事件循环
总而言之,管理大量异步操作的机制叫做事件循环

EventLoop:
回调函数队列,当异步函数执行时回调函数会被压入这个队列;对于node.js来说,它有一个单线程不断查询队列是否有事件,当它读取到一个事件时候,将调用与这个事件关联的js函数。

事件的循环是一个先进先出的任务队列,回调按照他们加入队列的顺序来执行。

整个队列可以理解成是普通函数和回调函数构成的一个完整的队列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var c=0;
function printIt(){
console.log(c);
}
function plus(callback){
setTimeout(function(){
c+=1;
callback();
},1000)
}
plus(printIt);
//1

node.js 核心思想:

  • 非阻塞
  • 单线程
  • 事件驱动
AlexZ33 wechat
扫码订阅公众号
如果文章对您有用请随意打赏,谢谢支持!