最佳答案:事件驱动是概念,回调函数是实现方式。不用回调函数,也可以实现事件驱动。例如:把事件消息发送到队列,另外一个进程取队列处理即可(没有回调函数)。事件驱动的本质特征:中心轮询机制。event loop的l
事件驱动是概念,回调函数是实现方式。
不用回调函数,也可以实现事件驱动。
例如:把事件消息发送到队列,另外一个进程取队列处理即可(没有回调函数)。
事件驱动的本质特征:中心轮询机制。
event loop的loop是轮询。
轮询的目的是什么?感知!
对象发生变化,如何感知这种变化?
不断的循环查询,loop探测!
系统n个对象,每个对象一个for循环 探测彼此的变化?
nonono……
建立一个轮询中心,这个轮询中心去轮询每个对象,这就是事件驱动。
发生了变化,通知感兴趣的对象,怎么处理?就是定义一个回调函数。
事件驱动,属于“感知层”的概念;
轮询中心,往往就是操作系统本身;
对于浏览器而言,就是浏览器本身。
也就是系统是轮询中心,
你定义 函数,系统调用你定义的函数。
对比:系统定义api,你调用api。
谁定义函数,谁调用,角色颠倒了!
api:系统定义的函数,你去调用;
事件驱动:你定义的回调函数,被系统调用。
还是没有懂?
事件驱动,就是“哨兵模式”!
哨兵轮询环境信息,你就安心睡大觉好了,不用每个人都轮询环境。发生了事件,哨兵(操作系统/浏览器/轮询中心)负责通知你!怎么处理这个消息,是你的责任!
这下你get到了吧……