[关闭]
@FunC 2016-10-20T17:36:33.000000Z 字数 723 阅读 2160

浅析Event Loop

JavaScript


前言

最近在学一点点Node.js,需要理解Node的运行机制,百度上一查,全都在说什么“异步处理”、“回调函数”、“事件轮询机制”、“单线程”、“并发处理”。满眼看过去都是陌生的名字,看得我瑟瑟发抖。这几天杂七杂八的也看了不少相关的文章,在这里做个记录,便于自己以及后人查询。


下面是组织中的内容

1. 同步与异步

  • 发出调用,立即得到结果是为同步同步就是调用之后一直等待,直到返回结果。
  • 发出调用,但无法立即得到结果,需要额外的操作才能得到预期的结果是为异步异步则是调用之后,不能直接拿到结果,通过一系列的手段才最终拿到结果(调用之后,拿到结果中间的时间可以介入其他任务)。
    by 朴灵 评阮一峰的《JavaScript 运行机制详解:再谈Event Loop》

同步和异步是处理调用的不同效果的一个描述,而不是一种机制。它需要执行环境(如浏览器)去实现。其中Event loop(事件轮询机制)就是实现异步的其中一种机制。

待引用《Node.js实战》内容

下面是我凭借自己理解举出的例子

我们先来假想一个去麦当劳点餐的场景。
补充前提:点餐和送餐的是由一位服务员完成
1. 首先,你到前台点餐。
2. 付钱过后服务员给你一张叫号单,让你等候取餐。
3. 然后服务员继续接待下一位客人。
4. 一段时间后,厨房做好了你的餐点。
5. 辅助叫号的服务员看到你点的餐做好了,叫你取餐。

这是一个典型的现实生活中异步的例子。下面来分析一下每一步对应程序里的什么:

以下是每一步的对应
1. 点餐相当于程序中的调用,这个调用期望的结果拿到你点的食物
2. 叫号单相当于回调函数
3. 服务员


2. 阻塞与非阻塞

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注