我正在尝试在AJAX调用完成后运行一些东西:
$.ajax({
url: url,
success: //do stuff
}).done(function (){
$('#listings').fadeIn(800).done(function(){
$('#loading').fadeOut(800);
});
});
这不是$('#loading').fadeOut(800);
的最后一部分,它应该在$('#listings').fadeIn(800)
完成时开始。
答案 0 :(得分:6)
fadeIn()
实际上不是那种返回promise的函数,但它确实有一个你可以使用的回调函数:
$.ajax({
url: url,
}).done(function (){
$('#listings').fadeIn(800, function(){
$('#loading').fadeOut(800);
});
});
答案 1 :(得分:6)
要从动画中获取promise对象,请使用.promise
。
$.ajax({
url: url,
success: handler
}).done(function (){
$('#listings').fadeIn(800).promise().done(function(){
$('#loading').fadeOut(800);
});
});
在这种特殊情况下,在动画中使用回调而不是.promise
和.done
更有意义。使用.promise
的优点是它会导致所有选定元素的单个回调,而不是每个元素的一个回调。由于您只是动画一个元素,因此回调将是最好的方法。 (adeneo的回答)
使用.promise还有其他优点,但您似乎不需要它们。 (例如$.when
)