我被建议在这个函数中使用.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;
}
});
});
}发布于 2015-01-10 03:38:56
给出使用.promise()的建议可能是因为您的代码在进行AJAX调用之前强制延迟了100 was (动画运行到完成时)。进行AJAX调用,然后在等待响应时启动动画可能更有意义。
为了实现这一点,我修改了您的代码,只需在启动动画之前进行AJAX调用。(默认情况下,jQuery.ajax()在内部使用.promise()。有关更多信息,请参见async选项。)请注意,在AJAX调用返回小于100 may的情况下,可能会更改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);
}https://stackoverflow.com/questions/27872483
复制相似问题