递延对象与扩展方法怎么在jQuery中使用

  介绍

今天就跟大家聊聊有关延迟对象与扩展方法怎么在jQuery中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强> 1递延对象

递延对象是jQuery的回调函数解决方案,它是从jQuery1.5.0版本开始引入的功能

<强>递延对象的方法

(1) .Deferred美元()生成一个递延对象。

(2) deferred.done()指定操作成功时的回调函数

(3) deferred.fail()指定操作失败时的回调函数

(4) deferred.promise()没有参数时,返回一个新的延迟对象,该对象的运行状态无法被改变,接受参数时,作用为在参数对象上部署递延接口。

(5) deferred.resolve()手动改变延迟对象的运行状态为“已完成“,从而立即触发完成()方法。

(6) deferred.reject()这个方法与deferred.resolve()正好相反,调用后将延迟对象的运行状态变为“已失败“,从而立即触发失败()方法

(7)当美元()为多个操作指定回调函数。

除了这些方法以外,延期对象还有二个重要方法,上面的教程中没有涉及到。

(8) deferred.then ()

有时为了省的事,可以把完成的()和()失败合在一起写,这就是那么()方法。

当美元($ . ajax (,“/main.php",))
  区间(successFunc, failureFunc ); 

如果那么()有两个参数,那么第一个参数是完成()方法的回调函数,第二个参数是失败()方法的回调方法。如果那么()只有一个参数,那么等同于()完成。

(9) deferred.always ()

这个方法也是用来指定回调函数的,它的作用是,不管调用的是deferred.resolve()还是deferred.reject(),最后总是执行。

$ . ajax (,“test.html",)   故事(,函数(){,警报(“已执行!“);},),

来点儿

<强> 1)ajax操作的链式写法

先回顾一下jQuery ajax的操作的传统写法:

. ajax({美元      url:,“test.html",      成功:函数(){   alert(“哈哈,成功了!“);   },      错误:函数(){   alert(“出错啦!“);   }   });

在上面的代码中,$ . ajax()接受一个对象参数,这个对象包含两个方法:成功方法指定操作成功后的回调函数,错误方法指定操作失败后的回调函数。

. ajax()美元操作完成后,如果使用的是低于1.5.0版本的jQuery,返回的是XHR对象,你没法进行链式操作,如果高于1.5.0版本,返回的是递延对象,可以进行链式操作。

有了延迟对象之后,可以这样写了

. ajax (“test.html")美元      .done(函数(){,警报(“哈哈,成功了!“);,})   fail(函数(){,警报(“出错啦!“);,});

上面代码中完成的()相当于成功方法,失败()相当于错误方法。采用链式写法以后,代码的可读性大大提高。

<强> 2)指定同一操作的多个回调函数

递延对象的一大好处,就是它允许你自由添加多个回调函数。

还是以上面的代码为例,如果ajax操作成功后,除了原来的回调函数,我还想再运行一个回调函数,怎么办?

很简单,直接把它加在后面就行了。

. ajax (“test.html")美元      .done(函数(){,警报(“哈哈,成功了!“);},)      fail(函数(){,警报(“出错啦!“),,},)   .done(函数(){,警报(“第二个回调函数!“);},),

回调函数可以添加任意多个,它们按照添加顺序执行。

<强> 3)为多个操作指定回调函数

递延对象的另一大好处,就是它允许你为多个事件指定一个回调函数,这是传统写法做不到的。

请看下面的代码,它用到了一个新的方法当美元():

当美元($ . ajax (“test1.html"), $ . ajax (“test2.html"))      .done(函数(){,警报(“哈哈,成功了!“);,})   fail(函数(){,警报(“出错啦!“);,});

这段代码的意思是,先执行两个操作$ . ajax (“test1.html")和$ . ajax (“test2.html"),如果都成功了,就运行完成()指定的回调函数,如果有一个失败或都失败了,就执行失败()指定的回调函数。

<强> 4)普通操作的回调函数接口(上)

递延对象的最大优点,就是它把这一套回调函数接口,从ajax操作扩展到了所有操作。也就是说,任何一个操作,不管是ajax操作还是本地操作,也不管是异步操作还是同步操作——都可以使用延迟对象的各种方法,指定回调函数。

我们来看一个具体的例子。假定有一个很耗时的操作等待:

递延对象与扩展方法怎么在jQuery中使用