jQuery ajax调用竞争条件?

时间:2015-02-27 15:08:21

标签: javascript jquery

我有以下javascript函数:

function deploy() {
    $.ajax({
        url: '/Theme/Deploy',
        type: 'POST'
    });
    location.reload();
}

单击按钮时会调用此函数。我想启动服务器调用然后立即刷新页面。当我使用上面的代码时,它从不进行服务器调用,它只刷新页面。当我删除location.reload()电话时,它会成功拨打电话。

是否存在竞争条件或发生在ajax调用之前重新加载页面的事情,即使它在代码中低于它?

2 个答案:

答案 0 :(得分:3)

请求是异步的。这意味着{<1}}在请求完成之前被称为

要实现您的要求,您应将reload()置于AJAX调用的location.reload()处理程序中,以便在请求完成后运行

success

答案 1 :(得分:0)

尝试将服务器作为脚本标记调用。我不确定这是否可以肯定,但在我的测试中,似乎可以进行并行请求。

function deploy(){
    var head = document.getElementsByTagName('head')[0];
    var sc = document.createElement('script');
    sc.setAttribute('src', '/Theme/Deploy');
    head.appendChild(sc);
    location.reload();
}