如何在什么情况下使用“队列”或“延迟执行”?它们的设计目的是什么?

5
我有些困惑,"queue"是用于动画效果的,而 "deferred" 则是用于Ajax吗?能否给出一些典型的例子呢?
1个回答

6

你的大部分说法是正确的。

"deferred objects" 可用于处理异步事件 - 你启动一个操作,然后注册一个回调函数,在操作完成时将被调用。这包括 AJAX,尽管还有很多其他用途。

jQuery 队列主要用于维护一系列(动画)函数按顺序调用,并且 .queue() 特别用于将自定义函数添加到动画队列中。

更复杂的问题是,动画也可以在完成时触发异步回调。"传统" 的方法是向动画函数提供回调函数,但对于现代 jQuery,如果在 jQuery 对象上调用 .promise(),则会获得一个 deferred 对象,该对象将在对象内每个元素上的任何现有动画完成时解决:

$('#id1,#id2').slideUp().promise().done(function() {
    // this will be called when the animations are complete
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接