一切都要从nodejs的fs模块说起
nodejs刚开始学,今天学了fs,就是文件操作的模块,里面有和微信小程序类似的回调函数,但是今天听课时讲了点异步,之前不是很懂,趁现在好好研究一下。
概念有点抽象,用个网上的例子加自己理解就通了:
有一个事件,参与者有水壶、老王。
- 老王酷爱喝茶,今天他想喝茶,要烧水。他拿了一个普通的水壶,开始烧水,他得等在水壶前,不然水壶会烧干,老王就喝不了茶了。这个叫做同步阻塞。
- 老王觉得这样不行,太难等了,他时不时的去干其他事,时不时的出来看看水壶好了没。这个叫做同步非阻塞。
- 老王有一天买了一个新的水壶(
因为老王是个程序员,有钱买水壶),这个水壶在水烧好了会响,老王烧水时也在水壶面前看着。这个叫做异步阻塞。 - 老王想,等水壶响了再来不就得了,老王在烧水时就去干其他事了。这个叫做异步非阻塞。
ok,四种情况都讲完了。这个例子也是网上看的,我觉得非常经典生动。
同步和异步是对水壶(消息)来说。关注的是消息的通信机制。同步只能让调用者(程序)去轮询自己,而异步的响水壶可以主动告诉调用者。
阻塞和非阻塞是对老王(程序)来说。关注的是调用者在等待结果时的状态。这个例子可能大家会发现,异步阻塞没啥用(第三种情况),老王还是得在水壶面前等,所以我觉得异步非阻塞才是比较有优势的。
而nodejs中,有大量的回调函数,都是异步的方式,这就给了nodejs很好的处理网络编程或者处理高并发的能力。而且还有npm,要什么有什么。nodejs未来前景很好啊
刚学的知识,有什么不对的大家一起讨论