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

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

相关内容