我的服务功能如下:
this.addJobRating = function(jobId, userId, rating){
var deferred = $q.defer();
$http.post('/to/my/api', {job_id: jobId, user_id: userId, rating: rating})
.success(function(data){
deferred.resolve(data)
})
.error(function(data){
deferred.reject('promise call failed');
});
return deferred;
};
我可以在我的控制器中调用上面的内容
console.log(myService.addJobRating(646, 9999, 'good-result')
这会在控制台日志中记录预期的promise对象。但是,如果我尝试使用以下方法解决承诺:
myService.addJobRating(646, 9999, 'good-result').then(function(data){
console.log(data);
}, function(data){
console.log(data);
});
我收到TypeError: undefined is not a function
错误。
为什么会这样?
答案 0 :(得分:4)
myService.addJobRating
应该返回deferred.promise
。
答案 1 :(得分:3)
您应该从addJobRating返回承诺 - deferred.promise
- 而不是deferred
。