有一个函数返回一个承诺:
req.postP = function () {
var $promise = $.ajax({
url: self._url(url),
type: "POST",
data: JSON.stringify(data),
headers: headers,
contentType: self.JSON_CONTENT_TYPE,
dataType: "json"
});
return new Promise( (resolve, reject) => {
return $promise.then(resolve, reject);
} );
}
另一个调用第一个函数的函数:
req
.postP(POST_REGISTER, userData)
.then((data) => {
// is never ecexuted
})
.catch((err) => {
console.log(typeof err.then === "function"); // true
});
永远不会执行then()
函数。
似乎承诺在catch函数内部为err
,因为err.then
是一个函数。
req.postP()
函数也被其他函数调用,并适用于这些情况。
答案 0 :(得分:0)
铸造标准承诺,不是问题。
问题是dataType
。根据{{3}}:
您期望从服务器返回的数据类型。
由于服务器在成功时没有为此请求返回任何数据 - 但是jQuery预期的数据 - 承诺总是被拒绝。
相关: jQuery docs