Open ihtml5 opened 7 years ago
deferred 故名思意 延迟对象。由于javascript单线程的缘故,javasript中异步编程特别场景,比如事件回调,ajax请求,web worker,动画,javascript和其他语言通信等,异步是保证数据完整和体验流畅性的重要保证。
简单地说,异步就是在某一刻注册你要做的什么事,将来某件事完成之后,再通知你做这个事。在jquery中defereed模块建立在callbacks模块上,为ajax,动画,事件模块提供异步功能
var df = $.Deferred(); df.done(function (value) { alert(value); }).fail(function(value) { alert(value*2);} df.resolve(6);
$.Deferred()
添加异步事件执行成功触发的函数
添加异步事件执行失败触发的函数
添加异步事件执行过程中触发的函数
通知异步事件执行成功,将异步对象状态设置为resolved,并传递参数给成功回调函数队列
通知异步事件执行失败,将异步对象状态设置为rejected,并传递参数给失败回调函数队列
通知异步事件执行失败,将异步对象状态设置为rejected,并传递参数给成功回调函数队列
将传入的值进行过滤,建立主异步对象和副异步对象的关联,当主异步对象状态变更时,就会 层层通知副异步对象执行
无论异步事件是否执行成功,都会执行always
返回当前异步对象的副本,不含resolve/resolveWith/reject/rejectWith/notify/notifyWith
一、defrred模块作用
deferred 故名思意 延迟对象。由于javascript单线程的缘故,javasript中异步编程特别场景,比如事件回调,ajax请求,web worker,动画,javascript和其他语言通信等,异步是保证数据完整和体验流畅性的重要保证。
简单地说,异步就是在某一刻注册你要做的什么事,将来某件事完成之后,再通知你做这个事。在jquery中defereed模块建立在callbacks模块上,为ajax,动画,事件模块提供异步功能
二、代码示例
三、API 详解
四、源码分析
参考资料