Javascript 函数不计算延迟对象时的jQuery

Javascript 函数不计算延迟对象时的jQuery,javascript,jquery,ajax,web,deferred,Javascript,Jquery,Ajax,Web,Deferred,我对Jquery延迟对象有问题。我在一个函数中创建了一个承诺,该函数将执行ajax调用并将数据保存到服务器。 我知道jQueryAjax有一个预定义的延迟对象 var AddCodes = function(XML ){ var def = $.Deferred(); $.ajax({ type: "POST", url: "webservicename.asmx/SaveCode", data: "{" + XML + "}",

我对Jquery延迟对象有问题。我在一个函数中创建了一个承诺,该函数将执行ajax调用并将数据保存到服务器。 我知道jQueryAjax有一个预定义的延迟对象

var AddCodes = function(XML ){
    var def = $.Deferred();

    $.ajax({
        type: "POST",
        url: "webservicename.asmx/SaveCode",
        data: "{" + XML + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function () {
            def.resolve();
        },
        error: function (jqXHR, status, error) {
            def.reject();
        }
    });

   return def.promise();
}
然后我像这样计算函数

$.when(AddCodes(XML)).then(function(){
    processData();
}
如果AddCodes()函数成功执行,我只调用另一个函数将一些数据插入数据库。因为两者都是相依函数

问题在于函数不计算延迟的
对象。processData()
从未工作过。我在我的项目中使用延迟第一时间。请帮我整理一下这个问题。

说明
$。when()
接受两个延迟对象(使用
$创建)。延迟()和
普通对象被视为已履行承诺

如果将单个参数传递给jQuery.when,并且该参数不是延迟参数,则它将被视为已解析的延迟参数,并且将立即执行任何附加的doneCallbacks

但是
AddCodes()
不会返回任何内容。如果返回延迟对象(
def
),这应该可以工作

因此,如果您将代码更改为

var AddCodes = function(XML ){
    var def = $.Deferred();

    $.ajax({
        ....
    });

    return def.promise();
}

你应该没问题。请注意,这就像。

我没有复制正确的代码。现在我编辑了代码。我已经使用了return。但不起作用。