首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.promise()首先启动Ajax请求?

使用.promise()首先启动Ajax请求?
EN

Stack Overflow用户
提问于 2015-01-10 03:08:41
回答 1查看 213关注 0票数 1

我被建议在这个函数中使用.promise(),因为就像现在一样,在加载动画完成之前,Ajax调用不会启动。我翻阅了法典,但不知道如何实现它。有人能告诉我怎么做到的吗?

代码语言:javascript
复制
    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;
                }
            });
        });
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-10 03:38:56

给出使用.promise()的建议可能是因为您的代码在进行AJAX调用之前强制延迟了100 was (动画运行到完成时)。进行AJAX调用,然后在等待响应时启动动画可能更有意义。

为了实现这一点,我修改了您的代码,只需在启动动画之前进行AJAX调用。(默认情况下,jQuery.ajax()在内部使用.promise()。有关更多信息,请参见async选项。)请注意,在AJAX调用返回小于100 may的情况下,可能会更改JavaScript的执行顺序。这可能会引起意想不到的副作用,但我认为这在你的情况下是可以的。

代码语言: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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27872483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档