浏览器的事件处理机制

js的运行是单线程的

一、浏览器在执行的时候会把某些代码放进事件队列

什么代码会进入事件队列:

1、定时函数

2、事件函数

3、ajax的回调函数

二、事件队列中的任务执行是有条件的:(主线程必须是空闲的)

1、定时函数的触发事件(到达延时事件)

2、事件函数的触发条件(特定的事件发生)

3、ajax回调函数的触发条件(服务器有数据响应:xhr.readyState状态发生变化饿时候出发)

1、定时函数

console.log(10);

for(var i = 0; i <5; i++) {

setTimeout(function () {

console.log(i);

},4000);

}

console.log(30);


控制台打印:

10

30

5个3-----主线程结束的后4秒后打印

2、事件函数

window.onload = function () {

console.log(10);

document.getElementById(‘btn‘).onclick = function () {

console.log(20);

};

console.log(30);

};


控制台打印:

10

30

20----点击的时候打印

 3、ajax的回调函数

var xhr = new XMLHttpRequest();

xhr.open();

xhr.send();

console.log(1);

var data = null;

xhr.onreadystatechange = function(){

console.log(2);

data = xhr.responseText;

}

console.log(data);

console.log(3);


控制台打印:

1

3

2

时间: 2024-08-03 21:31:07

浏览器的事件处理机制的相关文章

事件处理机制--浏览器流程处理分析

事件处理机制--浏览器流程处理分析 js的运行是单线程的,单线程即一个时间只能做一件事.浏览器的运行是多线程的. 如下三种情况会进入事件队列(任务队列)中,但不立即执行: 1.定时函数 2.事件函数 3.ajax的回调函数(xhr.onreadystatechange = function(){};  //会调用多次) 主线程中先执行非事件队列函数,再执行事件队列函数,事件队列中的事件先进去的先被判断,但不一定先被执行.事件队列中谁先满足条件先执行谁. 事件队列中的任务执行是有条件的:(前提条件

【js事件详解】js事件封装函数,js跨浏览器事件处理机制

一.事件流 事件流描述的是从页面中接受事件的顺序.IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流1.事件冒泡事件冒泡,即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上转播至最不具体的节点(文档).2.事件捕获事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件. 相关知识链接:js的事件冒泡和事件捕获 二.事件处理程序 1.HTML事件处理程序2.DOM0级事件处理程序3.DOM2级事件处理程序 DOM2级事件定义了两个方法

Chromium网页输入事件处理机制简要介绍和学习计划

用户在浏览网页的时候,需要与网页进行交互,常用的操作如滑动.捏合网页,以及点击网页中的链接等.这些交互操作也称为用户输入事件,浏览器需要对它们作出迅速的响应,例如及时更新网页内容或者打开新的网页等.浏览器能够对用户输入事件作出迅速的响应是至关重要的,因为这关乎到用户浏览网页时的体验,尤其是在用户滑动和捏合网页时.本文接下来就简要介绍Chromium对用户输入事件的处理机制,以及制定后续的学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 在任何一个

core java 8~9(GUI &amp; AWT事件处理机制)

MODULE 8 GUIs--------------------------------GUI中的包: java.awt.*; javax.swing.*; java.awt.event.*; 要求:1)了解GUI的开发流程:2)掌握常用的布局管理器 开发GUI图形界面的步骤-------------------------------1.选择容器 1)Frame容器 有缩小/最大化/关闭等按钮,顶层容器 2)Dialog对话框 通常依赖于容器,不单独出现 3)Applet 依赖于浏览器的支持

nagios 事件处理机制

接到zz的任务,实现自动化处理nagios某项报警 脑海里有个印象,这个功能之前线下做过实验 一.首先必须查看下nagios的官方文档,确认可行,以下是笔者整理的一些自认为有用的信息 1)了解命令的定义方法Writing Event Handler CommandsEvent handler commands will likely be shell or perl scripts, but they can be any type of executable that can run from

【Nginx-反向代理服务器】基础知识(一)之事件处理机制

反向代理服务器: 反向代理(ReverseProxy)方式是在服务器端接受客户端的请求,然后把请求分发给具体的服务器进行处理,然后再将服务器的响应结果反馈给客户端. 正向代理服务器与反向代理服务器的区别: 正向代理: 用户A主动访问服务器B,但是用户A的所有请求都由代理服务器Z来处理,也就是在用户A访问服务器B时,会通过代理服务器Z 反向代理: 反向代理正好与正向代理相反,用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答(即用户A访问的是代理服务器

Android基础入门教程——3.2 基于回调的事件处理机制

Android基础入门教程--3.2 基于回调的事件处理机制 标签(空格分隔): Android基础入门教程 本节引言 在3.1中我们对Android中的一个事件处理机制--基于监听的事件处理机制进行了学习,简单的说就是 为我们的事件源(组件)添加一个监听器,然后当用户触发了事件后,交给监听器去处理,根据不同的事件 执行不同的操作;那么基于回调的事件处理机制又是什么样的原理呢?好吧,还有一个问题:你知道 什么是方法回调吗?知道吗?相信很多朋友都是了解,但又说不出来吧!好了,带着这些疑问我们 对a

C#委托及事件处理机制浅析

事件可以理解为某个对象所发出的消息,以通知特定动作(行为)的发生或状态的改变.行为的发生可能是来自用户交互,如鼠标点击:也可能源自其它的程序逻辑.在这里,触发事件的对象被称为事件(消息)发出者(sender),捕获和响应事件的对象被称作事件接收者. 在事件(消息)通讯中,负责事件发起的类对象并不知道哪个对象或方法会接收和处理(handle)这一事件.这就需要一个中介者(类似指针处理的方式),在事件发起者与接收者之间建立关联.在.NET Framework中,定义了一个特殊的类型(delegate

android开发详解(六)--------------事件处理机制

1.工程目录 2.FireEvent.java package com.example.fireeevent; import java.util.EventObject; //着火事件类,绑定事件源 public class FireEvent extends EventObject { private Object eventSource; public FireEvent(Object source) { super(source); // TODO Auto-generated const