Javascript 嵌套承诺结构
我有一个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
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';
});
}