deferred.notify( args )返回: Deferred
描述: 根据给定的 args
参数 调用Deferred(延迟)对象上进行中的回调 (progressCallbacks)。
通常情况下,只有递延对象(Deferred)的创建者才能调用此方法;
您可以通过deferred.promise()
返回的受限制的 Promise 对象,来防止其他代码改变递延的状态 。
jQuery提供的deferred.promise()
方法的作用是,在原来的Deferred 对象上返回另一个 Deferred 对象,即受限制的 Promise 对象,受限制的 Promise 对象只开放与改变执行状态无关的方法(比如done()方法和fail()方法),屏蔽与改变执行状态有关的方法(比如resolve()方法和reject()方法),从而使得执行状态不能被改变。
首先看一个 Deferred对象的执行状态被改变的例子:http://jsbin
.com/zapeve/1/;
代码的尾部加了一行dtd.resolve(),这就改变了dtd对象的执行状态,因此导致done()方法立刻执行
再看一个 Deferred对象返回deferred.promise()
的例子:http://jsbin.com/fuvude/1/;
wait()函数返回的是promise对象。然后,我们把回调函数绑定在这个对象上面,而不是原来的deferred对象上面。这样的好处是,无法改变promise对象的执行状态,要想改变执行状态,只能操作原来的deferred对象。
当 deferred.notify
被访问时, 任何progressCallbacks 可以通过访问deferred.then
好或者 deferred.progress
来添加。回调是依照他们添加的顺序执行的。每次通过来自.notify()
的args
回调。再调用任何 .notify()
(或者添加 progressCallbacks) 都会被忽略。欲了解更多信息,请参阅文档
Deferred object.