Javascript 嵌套承诺结构

Javascript 嵌套承诺结构,javascript,promise,Javascript,Promise,我有一个javascript函数,有两个承诺: uploadDocument = function (formData, order) { $.ajax({ type: "POST", url: "/API/Documents/addDocument", data: formData, contentType: false, processData: false }).then(function (d

我有一个javascript函数,有两个承诺:

uploadDocument = function (formData, order) {
    $.ajax({
        type: "POST",
        url: "/API/Documents/addDocument",
        data: formData,
        contentType: false,
        processData: false
    }).then(function (documentID) {
        order.referenceID = documentID;
        return $.ajax({
            type: "POST",
            url: "/API/Documents/addOrder",
            data: ko.toJSON(transaction),
            contentType: "application/json"
        });
    }).then(function (result) {
        return 'success';
    });
}
这非常好,API调用success

对该函数的调用是:

uploadDocument(formData, order).then(function (data) {
     console.log('success');
})
此时我得到一个错误:

未捕获的TypeError:无法读取未定义的属性“then”


我在做什么?

您需要返回您的
$.ajax()
,然后在上面使用
然后使用
。如果不返回,函数默认返回未定义的
,那么为什么会出现错误呢。请参见
return
前面的
$.ajax(…)。然后(…)


调试代码可能重复。设置断点并检查变量。插入
console.log
语句。它本质上是一个输入错误,与任何其他错误一样,只要使用一些标准调试技术并考虑错误消息,就可以发现它。从这个意义上说,不,这不是一个“有用”的问题,这是否决投票的标准。
uploadDocument = function (formData, order) {
    return $.ajax({
        type: "POST",
        url: "/API/Documents/addDocument",
        data: formData,
        contentType: false,
        processData: false
    }).then(function (documentID) {
        order.referenceID = documentID;
        return $.ajax({
            type: "POST",
            url: "/API/Documents/addOrder",
            data: ko.toJSON(transaction),
            contentType: "application/json"
        });
    }).then(function (result) {
        return 'success';
    });
}