我有些困惑,"queue"是用于动画效果的,而 "deferred" 则是用于Ajax吗?能否给出一些典型的例子呢?
你的大部分说法是正确的。
"deferred objects" 可用于处理异步事件 - 你启动一个操作,然后注册一个回调函数,在操作完成时将被调用。这包括 AJAX,尽管还有很多其他用途。
jQuery 队列主要用于维护一系列(动画)函数按顺序调用,并且 .queue()
特别用于将自定义函数添加到动画队列中。
更复杂的问题是,动画也可以在完成时触发异步回调。"传统" 的方法是向动画函数提供回调函数,但对于现代 jQuery,如果在 jQuery 对象上调用 .promise()
,则会获得一个 deferred 对象,该对象将在对象内每个元素上的任何现有动画完成时解决:
$('#id1,#id2').slideUp().promise().done(function() {
// this will be called when the animations are complete
});