广州web培训
达内广州五羊中心

18589266248

热门课程

JS、浏览器、事件之间的关系

  • 时间:2016-10-05 20:48
  • 发布:广州web培训
  • 来源:web.jobbole.com

JavaScript 程序采用了异步事件驱动编程(Event-driven programming)模型,维基百科对它的解释是:

事件驱动程序设计(英语:Event-driven programming)是一种电脑程序设计模型。这种模型的程序运行流程是由用户的动作(如鼠标的按键,键盘的按键动作)或者是由其他程序的消息来决定的。相对于批处理程序设计(batch programming)而言,程序运行的流程是由程序员来决定。批量的程序设计在初级程序设计教学课程上是一种方式。然而,事件驱动程序设计这种设计模型是在交互程序(Interactive program)的情况下孕育而生的。

达内广州web培训换一种说法来说就是,在 web 前端编程里面 JavaScript 通过浏览器提供的事件模型 API 和用户交互,接收用户的输入。

由于用户的行为是不确定的,也就是说不知道用户什么时候发生点击、滚动这些动作。这种场景是传统的同步编程模型没法解决的,因为你不可能等用户操作完了才执行后面的代码。

比如我们在 Python 里面调用接收用户输入的方法 raw_input() 后终端就会一直等待用户的输入,直到输入完成才会执行后面的代码逻辑。但是在下面这段 NodeJS 代码中,接收用户输入的方法 process.stdin.read 是在一个事件中调用的。后面的代码不会被阻塞(blocked):

JavaScript

'use strict';

process.stdin.on('readable', () => {

var chunk = process.stdin.read();

if (chunk !== null) {

process.stdout.write(`Async output data: ${chunk}`);

}

});

process.stdin.on('end', () => {

process.stdout.write('end');

});

console.log('Will not be blocked');

事件驱动程序模型基本的实现原理基本上都是使用事件循环(Event Loop),这部分内容涉及浏览器事件模型、回调原理,达内广州web培训在这里就不赘述了。

需要说明的是在客户端 JavaScript 中像 setTimeout, XMLHTTPRequest 这类 API 并不是 JavaScript 语言本身就有的。而是 JavaScript 的宿主环境(在客户端 JavaScript 中就是浏览器),同样像 DOM、BOM、Event API 都是浏览器提供的。

上一篇:jQuery 中的事件绑定
下一篇:达内广州web培训详解:事件的古老绑定方法

马上预约三天免费体验课

姓名:

电话:

达内广州web培训详解ES5循环:for-in

达内广州web培训详解ES6循环:for-of

达内广州web培训详解ES5循环:forEach

达内广州web培训详解ES5简单for循环

选择城市和中心
江西省

贵州省

广西省

海南省