我在我服务的一个这种方法来进行API调用承诺:
this.postData = function(requestURL, requestObj) {
var deferred = $q.defer();
console.log("Reached APIService @POST", requestURL);
$http.post(requestURL, requestObj).success(
function(data, status, headers, config, statusText) {
deferred.resolve(data, status, headers, config, statusText);
console.log(status);
}).error(
function(data, status, headers, config, statusText) {
deferred.reject(data, status, headers, config, statusText);
console.log(status);
});
return deferred.promise;
};
});
基本上,这工作得很好,但最近我需要在我的代码头的数据,以获取出现异常时的错误消息。我很困惑如何获得返回的承诺中的信息。上述函数调用时只返回数据,其余4项未定义。我相信承诺不能解决上述多项问题。
那怎么办我返回的对象中的承诺,以获得对象由API返回的整个信息。 (正如文档所说,响应包含5个字段,数据,状态,标题,配置,statusText)。
需要帮助的..
解决或拒绝承诺之前,你试图注销其他参数(数据,状态,头,配置,状态文本)?他们注销了吗? – charliebrownie
我正在注销数据和状态,是的他们打印出这种服务方法很好。 –
查看@Thomas解决方案,这是最好的方法:'$ http.post'已经返回一个promise,所以你应该避免'$ q.defer()' - 也被称为[** deferred antipattern **](http://stackoverflow.com/questions/23803743/what-is-the-explicit-promise-construction-antipattern-and-how-do-i-avoid-it) – charliebrownie