JavaScript中 1 用代码举例说明 文字陈述和代码 何为事件驱动模式 JS中事件类型分类 2 (javascript)
本文目录导航:
JavaScript中,1)何为事件驱动模式(文字陈述和代码) 2)JS中事件类型分类(用代码举例说明)
12.2事件驱动与事件处理事件驱动是JavaScript响应用户操作的一种处理方式,而事件处理是JavaScript响应用户操作所调用的程序代码。
12.2.1事件驱动在多年以前,计算机程序通常是以批处理的模式运行。
所谓批处理,就是开发者事先写好一些代码,再将这些代码一次运行。
这种处理方式有点类似于通过HTML代码直接编写的网页。
浏览器只是将HTML代码逐行解析,并显示在浏览器窗口。
后来,在批处理模式中,开发者可以加入一些特定的代码,在程序批处理期间,可以停下来等待用户输入一些信息,并根据用户输入的信息来判断和执行某个程序分支,这就使程序有了初步的交互性。
随着鼠标、触摸屏等设备的出现,批处理时代就逐渐远去,取而代之的是事件驱动的时代。
当然,批处理也还能使用,只是使用的范围和频率比事件驱动要少得多。
以鼠标为例,在事件驱动中,用户可以使用鼠标单击等方式进行操作,程序则根据鼠标指针的位置以及单击的方式进行响应。
JavaScript使用的就是这种事件驱动的程序设计方式。
在JavaScript中,事件(Even)包括以下两个方面:● 用户在浏览器中产生的操作是事件,如单击鼠标、按下键盘上的键等。
● 文档本身产生的事件,如文档加载完毕、卸载文档等,都是事件。
12.2.2事件处理在JavaScript中,浏览器会使用事件来通知JavaScript程序响应用户的操作。
事件的类型有很多种,如鼠标事件、键盘事件、加载与卸载事件、得到焦点与失去焦点事件等。
在事件产生的时候,浏览器会调用一个JavaScript程序来响应这个事件,这就是JavaScript的事件处理方式。
要想让浏览器可以调用合适的JavaScript程序,就必须要做到以下 3点:(1)设置HTML文档中响应事件的元素。
在一个HTML文档中,并非所有元素都会去响应事件。
就鼠标单击事件而言,一般在HTML文档的正文不会响应该事件,但在按钮中一般都会响应该事件。
(2)设置元素响应事件的类型。
在确定了哪些元素响应事件之后,要设置该元素响应事件的类型。
例如,一个按钮通常会响应鼠标单击事件(click事件),而一个下拉列表框通常会响应选项变化事件(change事件)。
在同一个元素中,也可以响应多个事件。
例如,一个超链接,在鼠标移动到该超链接上时,可以响应鼠标移动到对象上事件(mouseover事件),当鼠标从超链接上移开时,又可以响应鼠标移开事件(mouseout事件)。
(3)设置响应事件的程序。
为了让浏览器可以响应事件,必须要设置响应事件的程序。
例如一个按钮被单击时,浏览器会响应这个click事件,此时浏览器就会在JavaScript中寻找一个合适的程序,并运行该程序。
这个程序可以是用户自定义的函数,也可以是一段JavaScript代码,还可以是JavaScript内置对象的方法等。
看看这个更详细

超强总结!微服务之间的几种调用方式
在微服务架构中,服务间的相互调用是关键问题。
主要有两种方式:远程过程调用(RPC)和事件驱动(Event-driven)。
RPC方式允许服务之间进行点对点的调用,可以立即获得返回结果,适用于多数应用。
然而,这种紧耦合的方式在某些场景下可能成为瓶颈,尤其是在业务逻辑紧密相关时。
相比之下,事件驱动方式采用松耦合,消息传递模式,如发布-订阅模型,可以处理大规模异步通信。
消息队列作为缓冲,使得服务可以在无依赖的情况下独立运行,减少了耦合度,但返回值的传递较为困难。
事件驱动的类型包括:时间耦合、容量耦合、接口耦合和发送方式耦合。
时间耦合下,后台服务需一直工作以处理消息;容量耦合下,处理能力需匹配;接口耦合和发送方式耦合则是RPC方式的限制点。
在具体应用中,事件通知方式实现微服务间的非直接调用,通过消息传递协同工作。
事件溯源则是一种数据存储方式,记录所有事件以实现历史状态的回溯,但程序实现较为复杂。
API网关作为服务之间的代理,简化客户端访问多个微服务的工作,同时可减少函数间的耦合。
服务调用可以借鉴API网关思路,形成服务组合,提供统一接口,减少紧耦合影响。
紧耦合主要问题在于客户端和服务端升级不同步,解决策略包括支持多个版本和向后兼容。
向后兼容可通过使用支持该特性的RPC协议(如Protobuf gRPC)实现,允许新旧版本共存。
微服务数量不宜过多,一般规模公司十几到几十个服务可承受,超过百个服务将带来巨大运维负担。
内部微服务设计作为一种折中方案,外观为单体程序,内部采用微服务设计思想,既简化部署和运维,又易于后期拆分。
总的来说,事件驱动方式在微服务架构中表现出色,尤其适合松耦合场景。
在选择是否采用微服务时,应考虑业务逻辑的耦合性以及团队的管理需求。
内部微服务设计作为一种过渡方案,可帮助公司逐步适应微服务架构。
事件驱动计算机领域的事件驱动
事件驱动在计算机领域的应用,主要是通过事件的触发来执行相应的操作。
事件不仅限于用户操作,如点击按钮,还涵盖了硬件事件和软件事件,如时钟事件和操作系统事件。
事件驱动的核心是事件,它由三个主要部分组成:事件收集器、事件发送器和事件处理器。
事件收集器负责收集所有事件,事件发送器负责将事件分发到目标对象,而事件处理器执行具体的事件响应工作,通常在实现阶段确定,需要运用虚函数机制。
事件处理器是事件驱动程序中唯一可见的部分,也是开发者关心的内容。
视图作为事件发送器的目标对象,接受事件并进行处理。
在事件驱动程序中,从传统流线型程序结构转变为事件触发方式,使得应用程序具备相当的灵活性,能够应对离散和随机的事件。
基于事件驱动模型的Windows操作系统,为实现应用程序框架提供了便利。
在Windows系统中,事件收集器和部分事件发送器已被实现,这大大简化了开发过程。
事件处理器通常需要通过宏(如DECLARE_EVENT_TABLE)来绑定事件和处理函数,实现事件处理。
在weWidgets框架中,所有可以处理事件的类都继承自wxEvtHandler,包括窗口、按钮、菜单、文档等。
这些类可以包含事件表,用于绑定事件和对应的处理函数。
建立事件表的过程包括创建新类(继承自wxEvtHandler)、声明处理函数、在类声明中使用宏(BEGIN_EVENT_TABLE和END_EVENT_TABLE)绑定事件和函数,以及指定事件处理函数的参数类型(wxCommandEvent)。
在事件处理中,wxWidgets会将事件的枚举数映射到对应的处理函数,并调用该函数。
所有在事件表中被绑定的函数具有特定的形式:返回类型为void,非虚函数,参数类型为wxCommandEvent。
这种机制使得事件驱动程序能够灵活地响应各种事件,实现动态的操作。
在持续事务管理过程中,进行决策的一种策略,即跟随当前时间点上出现的事件,调动可用资源,执行相关任务,使不断出现的问题得以解决,防止事务堆积。
在计算机编程、公共关系、经济活动等领域均有应用。