我被建议在此函数中使用.promise()
,因为就像现在一样,Ajax调用在启动加载动画之前不会启动。我通读了手抄本,但无法真正理解如何实现它。有人能告诉我它是如何完成的吗?
function projectShow() {
$('#loading-animation').show(100, function() {
$.ajax({
type: 'POST',
cache: false,
url: ajaxURL,
data: {'action': 'load-content', post_id: post_id },
success: function(response) {
$('#project-container').slideDown('fast').html(response);
$('#loading-animation').hide();
return false;
}
});
});
}
答案 0 :(得分:1)
可能会给出使用.promise()
的建议,因为您的代码在进行AJAX调用之前会强制延迟100ms(当动画运行完成时)。进行AJAX调用可能更有意义,然后在等待响应时启动动画。
我已经修改了你的代码来实现这一点,只需在开始动画之前进行AJAX调用即可。 (jQuery.ajax()
默认情况下在内部使用.promise()
。有关详细信息,请参阅async
选项。)请注意,在AJAX调用返回时间小于100毫秒的情况下,JavaScript的执行顺序可以改变。这可能会导致不良的副作用,但我认为你的情况还可以。
function projectShow() {
$.ajax({
type: 'POST',
cache: false,
url: ajaxURL,
data: {'action': 'load-content', post_id: post_id },
success: function(response) {
$('#project-container').slideDown('fast').html(response);
$('#loading-animation').hide();
return false;
}
});
$('#loading-animation').show(100);
}