当前位置:首页 > 日记 > 正文

javascript异步编程代码编写规范承诺学习笔记

javascript异步编程代码编写规范承诺学习笔记
最近,工作很简单,想到了一个我经常看到的诺言,所以我很有耐心,也很有学问。
1:什么是承诺你为什么有这个东西

首先,承诺旨在解决Javascript代码在异步编程中的编写方式。

使用Javascript的发展,有越来越多的异步场景。前端Ajax,setTimeout等等,和后端节点是异步的。按照传统的做法,它是各种回调,回调代码可以让人头晕。

在这个时候,CommonJS社区提出了规范要求的承诺/ +,它定义了如何编写异步代码,包括使用时 /然后/解决组织异步代码。

本规范是非常优雅,所以很多人已经实现了这个规范的先后,包括浏览器支持的承诺(),递延和when.js jQuery。

因为这些库都符合规范,所以可以学习一个。我主要学习了jQuery的延迟,所以本文主要讨论这个实现。
二:jQuery的延迟

首先,在延迟对象上,阮一丰有一篇详细的文章,地址点,建议先看看他的文章,然后继续往下看。

正如人们所说,承诺是解决异步(如Ajax),所以让我们比较它们的差异。

经典jQuery的ajax编写是

复制代码代码如下所示:

$ ajax({

键入:获取

URL

成功:(函数){ },

错误(函数){ };

});
成功和错误参数是成功/失败时间的回调函数。
现在jQuery的ajax编写是

复制代码代码如下所示:

$ ajax({

键入;获取

URL:

完成(函数)}(失败)(函数(){ });
成功后,调用完成的函数,失败将调用失败内部的函数。
这里您可能有一个问题要看,哪个对象是已完成/失败方法返回的对象是什么为什么有这两种方法

答案是下面介绍的延迟对象。

jQuery提供了一种新类型的延迟。

复制代码代码如下所示:

var(=);
这个DEF继承了很多方法,如做了/拒绝/拒绝等。

因此,在这里我们还知道上面的ajax()实际上是返回的对象。
延迟对象有很多方法。下面是几种常用的方法,更多的可以参考api。
首先,生成一个DEF对象是很自然的:

复制代码代码如下所示:

var

$(ajax);

当方法返回一个DEF对象时
这里,$()可以单独指出,该方法通常接收一个或多个延迟对象,然后根据这些延迟对象的状态确定$()返回的对象的状态,其中一个场景是多个Ajax请求。如果其中一个失败,那么可以将多个Ajax方法引入到$()中,例如$(当ajax()),然后返回一个DEF对象(由两个请求的结果判断)。
然后你得到了DEF对象,还有一系列改变对象状态的方法。

复制代码代码如下所示:

(DEF。解决); / /设置定义对象已经完成,然后执行def.done立即绑定()函数内部。

(DEF。拒绝); / /设置定义对象失败了,然后执行def.fail立即绑定()函数内部。

def.notify(DEF); / /对象执行相应的回调(DEF。进展)。
下面是设置回调、序列和对应的方法,这就是状态调用回调函数的方式。

复制代码代码如下所示:

(已完成)(解析);

(失败)(拒绝);

(进度());

特殊的

(总是);成功或失败将调用

然后,根据成功(完成)、失败(失败)和(进度)的顺序接受多个函数。
事实上,延迟对象的使用几乎相同,但jQuery也提供了几个API。

复制代码代码如下所示:

当前状态/检查

def.isrejected();

def.isresolved();

def.state();
顾名思义,这些API将不是特定的,并且可以在其上看到jQuery API文档。
另一种方法是,有时我们想给一个外部定义的对象,然后对象可以设置各种状态回调,但不能改变它的状态,因此可以用。

复制代码代码如下所示:

Def.promise();
返回一个promiese对象是延迟对象的子集。它可以使用完成/失败等方法,没有解析/拒绝等方法,主要是为了保护外部对象的状态。
到目前为止,关于承诺已经全部完成,你现在可以把它放在你自己的项目中,除了给大家一个快乐、快乐的一年之外,无比骄傲。

相关文章

超级心痛分手与失恋经典签名

超级心痛分手与失恋经典签名

心痛,经典,电脑软件,以下是萧边的收藏超级心碎,破碎的爱的内容,经典的个性签名。如果你喜欢Xiaobian的推荐,请继续关注。 我和他分手了,我从来没有赢过第三次。 夫妻本是同林鸟,飞桃临门。 那些说永不分离的人早已离散了世界。 分手后说一些不重…

网页设计与西方建筑发展的相似之处

网页设计与西方建筑发展的相似之处

西方,网页设计,之处,建筑,电脑软件,网络设计和西方建筑有什么相似之处本文给出了一个分析 历史总是令人惊讶的,西方建筑和网页设计是一个复杂的工程和艺术。他们的发展非常相似,与以下四个因素有着密不可分的关系。 所有都为用户提供了一个…

Javascript达到完美的拖拽效果

Javascript达到完美的拖拽效果

拖拽,效果,完美,电脑软件,Javascript,拖放原理 1。得到的距离(鼠标位置的外面,距离odiv) 2。了解何时使用移动鼠标事件 三.判断边界是否已过 HTML代码: CSS代码: # DIV1 {宽度:100px;身高:100px;背景:红色;位置:绝对} Javascript代码: 窗口。指针函数(){ …

如何欣赏衣帽间衣帽间的装饰效果

如何欣赏衣帽间衣帽间的装饰效果

衣帽间,效果,电脑软件,衣帽间是一个小而温暖的地方。装修中也有很多的注意。细节决定质量。 女房客,许多个人的服装,尤其是在冬去春来,冬天的毛衣、棉会聚集在一起,拿出了自己的光和美丽的春天,这需要一个合适的衣帽间,这几乎是每个女人的梦想,但…

excel函数中有哪些excel函数

excel函数中有哪些excel函数

函数,中有,电脑软件,excel,数据库和列表管理功能: 平均返回选定数据库项的平均值。 计算数据库中包含数字的单元格的数量。 数据库中的非空单元数COUNTA计算 dget提取符合指定条件的单个记录从数据库 max返回所选数据库项中的最大值。 min返…

PS图象处理软件变成可爱的动物变成

PS图象处理软件变成可爱的动物变成

图象,处理软件,奥特曼,动物,过程,本教程介绍朋友到PS图象处理软件,把可爱的动物到奥特曼的方法。教程非常有效,方法非常简单。推荐他们。 PS图象处理软件有很多功能,和面部的修饰是其功能之一,萧边今天与大家分享关于如何有小动物喜欢奥特曼,我…

正确的PHP与UTF-8中文正则表达式

正确的PHP与UTF-8中文正则表达式

正则表达式,中文,正确,电脑软件,UTF,我以前用过这个。 复制代码代码如下所示: preg_match(' ~ { x7f - xff } + ~是美元美元,字符串,TMP); 今天发现,它也将符合一些欧洲国家的特点。 您应该使用以下内容,注意修饰符u 复制代码代码如下所示: pr…

PHP对象与数组的相互转换方法

PHP对象与数组的相互转换方法

对象,转换方法,数组,电脑软件,PHP,本文演示了PHP对象和数组的相互转换,供大家参考,具体分析如下: 这里我们定义了2个PHP匿名对象和数组相互转换的函数。代码如下: 功能array2object($array){ 如果(is_array($array)){ $ obj =新StdClass(); foreach(数组…

JS正则表达式中的单行模式和多行模

JS正则表达式中的单行模式和多行模

模式,正则表达式,案例分析,电脑软件,JS,本文对JS正则表达式中的单行模式和多行模式进行了分析,供大家参考: js正则表达式不支持单行模式,也就是说,您不能处理一个内容(一行),使用一个模式修饰符,并将内容的整个部分作为一行。 常规行置换要求 /毫…

CorelDraw图像覆盖到文本最简单的

CorelDraw图像覆盖到文本最简单的

覆盖,图像,文本,解决方案,最简单,如何画块CorelDRAW的文字当你设计的东西用CorelDraw,有时你拖动图片,你觉得图片是封闭的文本,那么我们该怎么做这里有一个超级简单的方式与你需要的朋友分享。 当我们设计的东西用CorelDraw,有时我们拖动图片,我…

读我承认我已经做了沧桑与QQ空间感

读我承认我已经做了沧桑与QQ空间感

空间感,沧桑,我已经,电脑软件,QQ,读过一万多本书,写有上帝的话,多读些书,读好书,读好书,这是我读过之后读过的我说沧桑的经历,欢迎大家阅读。 复制这些年有多远,像复制一样!现在我的心开始断断续续,有时晃动使我像刀一样困在稻草上,有时突然闪光。我…

AI绘制超现实的特斯拉跑车

AI绘制超现实的特斯拉跑车

绘制,特斯拉,跑车,电脑软件,AI,本教程是介绍给一个朋友,谁使用AI绘制超漂亮的现实特斯拉跑车。由本教程制作的跑车真的很漂亮,很现实。建议你最喜欢的朋友一起学习。 本教程教AI学习者使用AI绘制超漂亮的现实特斯拉跑车。由本教程绘制的跑车…