异步回调--deferred (延迟)

转载 (原文地址) qiao 随笔 经验总结 176阅读 2019-01-25 16:27:41 举报

deferred 对象时jQuery的回调函数解决方案。defer:延迟,deferred对象的含义是“延迟”到未来的某个点再执行。

1、1.5.0版本的jQuery中ajax有两个方法,success和error,返回XHR对象,不能进行链式操作;高于1.5.0版本的返回deferred对象,可以进行链式操作;写法如下:

2、defferred 对象的另一大好处就是允许为多个事件指定一个回调函数,$.when();

解析:先执行两个ajax,都成功,执行done()指定的回调函数;如果一个或两个都失败了,就执行fail()指定的回调函数。
3、普通操作也可以使用deferred
1)

2)改写如下:

3)deferred.promise()
在 2)的基础上,如果在最后加上一句dfd.resolve(),则执行结果是先执行done()方法,再执行wait()方法,因为dfd是全局对象,外部可以直接改变执行状态。
这时,需要deferred.promise()方法,是在原来的deferred对象上返回另一个deferred对象,后者只开放与执行状态无关的方法(如done()方法和fail()方法),屏蔽与改变执行状态有关的方法(如resolve()方法和reject()方法)从而使执行状态不能被改变。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复