JavaScipt 源码解析 异步

news/2024/7/2 3:34:02

我们常见的异步操作:

定时器setTimeout
postmessage
WebWorkor
CSS3 动画
XMLHttpRequest
HTML5的本地数据
等等…

JavaScript要求在与服务器进行交互时要用异步通信,如同AJAX一样。因为是异步模型,所以在调用Transaction游览器提供的本地数据接口时候类似AJAX(这里我是假设),浏览器自己有内部的XHR方法异步处理,但是此时的JS代码还是会同步往下执行,其实就是无阻塞的代码。

问题:因为无阻塞,代码在发送AJAX这个请求后会继续执行,那么后续的操作如果依赖这个数据的就会出错了,所以这里就需要等待AJAX返回,才能执行后续操作。

Deferred

Deferred提供了一个抽象的非阻塞的解决方案(如异步请求的响应),他创建一个promise对象,其目的是在未来某个时间点返回一个响应,简单来说就是一个异步/同步回调函数的处理方案。

$.Deferred在jQuery代码内部有四个模块被使用,分别是promise方法,DOM ready,Ajax模块,动画模块。

Ajax的改造

传统的jQuery的Ajax操作的传统写法(1.5之前):

$.ajax({

  url:"",

  success:function(){alert("success")},

  error:function(){alert("fail")}

});

$.ajax()接受一个对象参数,这个对象包含两个方法,success方法,指定操作成功后的回调函数,error方法指定操作失败后的回调函数。

1.5版本后通过新的Deferred引入

$.ajax("").done(function(){alert("success")}).fail(function(){alert("fail")});

 

转载于:https://www.cnblogs.com/huangyin1213/p/6225316.html


http://www.niftyadmin.cn/n/4308595.html

相关文章

.NET平台开源项目速览(10)FluentValidation验证组件深入使用(二)

在上一篇文章:.NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一) 中,给大家初步介绍了一下FluentValidation验证组件的使用情况。文章从构建间的验证器开始,到最后的结果,以及复杂验证等都做了比较深入的讲解和使用…

EhCache RMI 分布式缓存/缓存集群

EhCache 系统简介 EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点。 EhCache 的主要特性有: 快速、精干简单;多种缓存策略;缓存数据有两级:内存和磁盘,因此无需担心容量问题;缓存…

谈谈博客园和写博客,以及通过博客遇到的那些人

不知不觉,博客园园龄已经5年11个月了,还曾依稀的记得,那是研究生毕业设计搞完了,有没有什么事情可以做,只能每天背个屌丝的书包去学院机房,狂赚CSDN积分,曾经高峰期的时候CSDN积分达到16000分&a…

SmartHome

ZigBee: CEL MeshConnect ZICM357SP2-1 Z-Wave: ZM4101AA-CME3

Python函数中的参数(二)

当使用混合特定的参数匹配模型时,Python将会遵循以下有关顺序的法则: 1、在函数调用中,参数必须以这样的顺序出现:任何位置参数(Value)、任何关键字参数(name Value)和*sequence形式…

.NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)

今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinatorics组件的使用情况,其实这个组件我5年前就开始用了,非常方便,麻雀虽小五脏俱全。所以一直非常喜欢,才写了几篇文章推荐给大家。最近在计算…

nfs 搭建

nfs 搭建yum install nfs-utils rpcbind 修改配置文件 /etc/exports格式 每个共享的文件系统需要独立一行目录客户端主机列表需要使用空格隔开配置文件中支持通配符 语法结构 共享路径 客户端主机(选项) 默认设置 ro,sync,wdelay,root_squash 对应表ro 只…

Android AudioManager 音频管理

<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/too…