【发布时间】:2018-11-08 21:09:53
【问题描述】:
有一个函数返回一个承诺:
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() 函数永远不会执行。
由于err.then 是一个函数,因此该promise 似乎在catch 函数中,为err。
req.postP() 函数也被其他函数调用并在这些情况下工作。
【问题讨论】:
-
return new Promise( (resolve, reject) => {...} );...无论...是什么,你都知道resolve吗? -
如果
catch块运行,则必须调用reject而不是resolve -
或者
...中抛出了一个错误——这将与调用reject的结果相同......没有看到相关代码,这肯定是个谜 -
需要得到你的承诺..
-
@JaromandaX 我添加了承诺。
标签: javascript promise