【发布时间】:2016-01-02 10:59:59
【问题描述】:
看看我的代码示例:
我已将其简化为(我认为是)最基本的内容,并且我正在设置错误deferred.reject is not a function
angular
.module('myApp')
.service('myService', MyService);
MyService.$inject = ['$http', '$q'];
function MyService($http, $q) {
var self = this;
self.getResult = getResult;
function getResult(id) {
var deferred = $q.defer();
deferred = $http.get('my/api/method', { params: { id: id } })
.then(getResultCompleted)
.catch(getResultFailed);
function getResultCompleted(response) {
if (response.data.ID > 0) {
deferred.resolve(response.data);
} else {
deferred.reject(response);
}
}
function getResultFailed(response) {
deferred.reject(response);
}
return deferred.promise;
}
}
注意:我知道我可以通过简单地返回 $http 调用的结果来让它工作,但是为了理解这些承诺对象,我想看看我是否能得到这个通过声明和返回deferred 来工作,如上所示
谢谢!
【问题讨论】:
-
$http.get()返回承诺,但不延迟 -
@Vadim:我不明白。你能详细说明一下吗?
-
我指的是
deferred = $http.get()字符串。这是不正确的,因为$http.get()返回的不是延迟对象,而是承诺。所以,你可以直接返回$http.get
标签: javascript ajax angularjs promise angular-promise