使用.done是async:false的同义词吗?

时间:2014-03-18 15:32:00

标签: javascript jquery ajax asynchronous

我有一大堆$ .ajax请求需要在启动之前等待对方。我知道不推荐使用async:false选项,而且我也知道如果我在.done中添加后续函数,那么这将与async:false的行为相同。然而,为了保持清洁,我想知道作为一种替代方案,我可以在没有额外代码的情况下离开.done,只需从#34;从上到下订购我的ajax":这会告诉jquery运行ajax,然后执行.done中的任何内容(在我的情况下都没有!),"模仿" async:false?

举个例子:

$.ajax({type: 'POST',
        data: cool_data : "cool_data",
        url: 'somewhere_over_the_rainbow.php'
        }).done(function(){

        })
$.ajax({type: 'POST',
        data: more_cool_data : "more_cool_data",
        url: 'more_somewhere_over_the_rainbow.php'
        }).done(function(){

        })

谢谢!

2 个答案:

答案 0 :(得分:3)

没有

done注册将在服务器应答时调用的回调。

使用async:false阻止页面直到服务器应答。 不要使用

将您的来电链接起来的解决方案是使用then

$.ajax({ ... })
.then($.ajax({ ... })
.then($.ajax({ ... })
.then(function() { ... finished! ... });

答案 1 :(得分:0)

为什么不使用complete功能?

$.ajax({type: 'POST',
        data: cool_data : "cool_data",
        url: 'somewhere_over_the_rainbow.php',
        complete: function()
        {
            $.ajax({type: 'POST',
                data: more_cool_data : "more_cool_data",
                url: 'more_somewhere_over_the_rainbow.php',
                complete: function() 
                { 
                    // do something else
                }
            });
        });