Javascript $。当我没有像预期的那样工作时

Javascript $。当我没有像预期的那样工作时,javascript,jquery,ajax,Javascript,Jquery,Ajax,请参见下面的JavaScript: function LoadAjax(){ $.when(Possibles()) //Display Possibles first .done(function () { //alert('Possibles complete); GetSQLTable(); LinkedUSNs(); }) } 我希望在GetSQLTable和LinkedUS

请参见下面的JavaScript:

function LoadAjax(){
    $.when(Possibles()) //Display Possibles first
        .done(function () {
            //alert('Possibles complete);
            GetSQLTable();
            LinkedUSNs();
        })
}
我希望在
GetSQLTable
LinkedUSNs
开始之前,有可能完成并在网页上显示所有信息。然而,这并没有发生。首先显示来自
GetSQLTable
的信息。但是,如果我添加了一个警报框(目前在上面的代码中注释掉了),那么它就可以工作了。为什么会这样


Possibles()。您可能希望检查承诺中延迟对象的当前状态(
Possibles()
函数):

或者您可以在您的承诺中调用resolved(这将调用由
deferred.then()或
deferred.done()添加的任何
doneCallbacks
):


大概
Possibles()
不会返回一个承诺,但您没有提供足够的代码来说明更多。JavaScript编程中的惯例是只对构造函数使用以大写字母开头的函数名(即打算与
new
一起使用的函数名)。我建议重命名你的函数。@Quentin:虽然这是真的,但大写惯例与这个问题毫无关系。
    $.Deferred(function(deferred) {
        // debug
        console.log(deferred.state());
    });
    $.Deferred(function(deferred) {
        // dom ready?
        $(deferred.resolve);
    });