JQuery 的 deferred . promise对象?

描述: 返回一个 Promise 对象,用来观察当某种类型的所有行动绑定到集合,排队与否还是已经完成。

这句话是什么意思看不懂呀 -_-!!

谁来帮忙解释下

返回一个 Promise 对象,用来观察当某种类型的所有行动绑定到集合,排队与否还是已经完成。

用来观察当某种类型的所有行动绑定到集合,排队与否还是已经完成。 
是什么意思

用来观察 XX 与否还是已经完成 这个明白,但是XX的地方不明白 

啥是 所有行动绑定到集合,排队 ?

慕田峪9158850
浏览 638回答 2
2回答

喵喔喔

  你说的这段描述是对 jQuery(selector).promise()的描述,并不是 jQuery.Deferred() 的描述。  原文是:1Return&nbsp;a&nbsp;Promise&nbsp;object&nbsp;to&nbsp;observe&nbsp;when&nbsp;all&nbsp;actions&nbsp;of&nbsp;a&nbsp;certain&nbsp;type&nbsp;bound&nbsp;to&nbsp;the&nbsp;collection,&nbsp;queued&nbsp;or&nbsp;not,&nbsp;have&nbsp;finished.  而这段话是说:1jQuery(selector).promise()&nbsp;函数是返回一个&nbsp;Promise&nbsp;对象,这个对象的作用是当绑定到集合【也就是$('div')这样取到的集合】的指定类型的所有动作(promise方法的第一个参数&nbsp;type&nbsp;,默认是fx,也就是动画)是否已经完成了。  英文水平有限,有些地方看不怎么懂,这话说得有点乱,不过意思应该是这样的,举个例子:123456$('#message').animate({width:400,&nbsp;height:240},&nbsp;3000).promise().done(function(){&nbsp;&nbsp;&nbsp;&nbsp;console.log('animate&nbsp;end');});  也可以写成:1234567$('#message').animate({width:400,&nbsp;height:240},&nbsp;3000);&nbsp;var&nbsp;promise&nbsp;=&nbsp;$('#message').promise();&nbsp;promise.done(function(){&nbsp;&nbsp;&nbsp;&nbsp;console.log('animate&nbsp;end');});  这里的&nbsp;$('#message') 就是所说的collection,  而动画 animate (即 fx)就是 certain type,  里面的所有动作就是 action queue,当然,这里只有1个,就是默认的fx (但是文档中没有找到介绍其它的类型)。  后面的 var promise = xxx 就是指返回的 Promise对象,这个对象在收到animate 方法里面的信号(这个信号包括 resolve,&nbsp;reject,&nbsp;notify,&nbsp;resolveWith,&nbsp;rejectWith, and&nbsp;notifyWith等)可以调用方法done(当然还有不少其它的方法,这里没用到就不说了,自己看文档吧),然后执行done的回调函数了。  animate方法会自己发送promise的信号,不用手动去处理。具体细节可以参考 jQuery.Deferred() 方法,在API的介绍中有这个方法的使用示例。  需要注意的是, jQuery(selector).promise()和jQuery.Deferred().promise()是不一样的。  从目前我知道的来说,jQuery(selector).promise() 是专门用来处理jquery中的动画(animate)使用的,而jQuery.Deferred().promise()使用的范围更广,没看源码,不过猜一下,我觉得&nbsp;jQuery(selector).promise()是jQuery在动画的时候对jQuery.Deferred().promise()的特殊实现(或者叫做功能封装)。  然后再说一下jQuery.Deferred().promise()吧。它的一般用法为:1234567var&nbsp;defer=&nbsp;$.Deferred();$.when(defer.promise()).then<done|fail|....>(参数...)&nbsp;defer.resolve('传参数或留空');defer.reject('传参数或留空');defer.notify('传参数或留空');//&nbsp;.....&nbsp;其它信号实例请自己去看API页面。上面的defer是一个延迟对象(deferred)引用,表示这个对象的信号会在将来发出。接下来的 $.when(defer.promise()) 是指jQuery 要监视 defer的信号,收到信号后执行后面的then(或者done, fail或其它)的函数。而后面的defer.resolve<reject|notify>则是发出信号,通知jQuery延迟调用已经执行了,jQuery收到信号后,就去调用这个延迟的promise()后面的函数。
打开App,查看更多内容
随时随地看视频慕课网APP