Node.js中如何深入理解异步IO与事件循环机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3494个文字,预计阅读时间需要14分钟。
前言:学习Node.js便绕不开异步IO,而异步IO又与事件循环息息相关。这一块内容我之前一直没有细去理解,最近在项目开发过程中,有一些思考便记录下来,希望尽可能地将这一概念讲清楚。
前言
学习Node就绕不开异步IO, 异步IO又与事件循环息息相关, 而关于这一块一直没有仔细去了解整理过, 刚好最近在做项目的时候, 有了一些思考就记录了下来, 希望能尽量将这一块的知识整理清楚, 如有错误, 请指点轻喷~~
一些概念
同步异步 & 阻塞非阻塞
查阅资料的时候, 发现很多人都对 异步和非阻塞 的概念有点混淆, 其实两者是完全不同的, 同步异步指的是 行为即两者之间的关系 , 而阻塞非阻塞指的是 状态即某一方 。
以前端请求为一个例子,下面的代码很多人都应该写过
$.ajax(url).succedd(() => { ...... // to do something })
同步异步
如果是同步的话, 那么应该是client发起请求后, 一直等到serve处理请求完成后才返回继续执行后续的逻辑, 这样 client和serve之间就保持了同步的状态 。
如果是异步的话, 那么应该是client发起请求后, 立即返回 , 而请求可能还没有到达server端或者请求正在处理, 当然在异步情况下, client端通常会注册事件来处理请求完成后的情况, 如上面的succeed函数。
阻塞非阻塞
首先需要明白一个概念, Js是单线程, 但是浏览器并不是, 事实上你的请求是浏览器的另一个线程在跑。
如果是阻塞的话, 那么 该线程就会一直等到这个请求完成之后才能被释放用于其他请求 。
本文共计3494个文字,预计阅读时间需要14分钟。
前言:学习Node.js便绕不开异步IO,而异步IO又与事件循环息息相关。这一块内容我之前一直没有细去理解,最近在项目开发过程中,有一些思考便记录下来,希望尽可能地将这一概念讲清楚。
前言
学习Node就绕不开异步IO, 异步IO又与事件循环息息相关, 而关于这一块一直没有仔细去了解整理过, 刚好最近在做项目的时候, 有了一些思考就记录了下来, 希望能尽量将这一块的知识整理清楚, 如有错误, 请指点轻喷~~
一些概念
同步异步 & 阻塞非阻塞
查阅资料的时候, 发现很多人都对 异步和非阻塞 的概念有点混淆, 其实两者是完全不同的, 同步异步指的是 行为即两者之间的关系 , 而阻塞非阻塞指的是 状态即某一方 。
以前端请求为一个例子,下面的代码很多人都应该写过
$.ajax(url).succedd(() => { ...... // to do something })
同步异步
如果是同步的话, 那么应该是client发起请求后, 一直等到serve处理请求完成后才返回继续执行后续的逻辑, 这样 client和serve之间就保持了同步的状态 。
如果是异步的话, 那么应该是client发起请求后, 立即返回 , 而请求可能还没有到达server端或者请求正在处理, 当然在异步情况下, client端通常会注册事件来处理请求完成后的情况, 如上面的succeed函数。
阻塞非阻塞
首先需要明白一个概念, Js是单线程, 但是浏览器并不是, 事实上你的请求是浏览器的另一个线程在跑。
如果是阻塞的话, 那么 该线程就会一直等到这个请求完成之后才能被释放用于其他请求 。

