【发布时间】:2017-02-24 07:08:37
【问题描述】:
我定义了以下IndexMangeService服务,希望能预先检查输入参数并在$http请求后返回一个promise。
merchant.service('IndexManageService', ['$http', '$q', function($http, $q){
this.getObjectIdByUrl = function(url) {
var deferred = $q.defer();
if (!(/.*ababab.com.*/.test(url))){
deferred.reject("url not correct");
}else{
$http.get('/api/getObjectIdByUrl?url='+url).then(
function success(response){
var json = response.data;
if(json.status == 0){
deferred.resolve({id: json.data.id});
}else{
deferred.reject(json.msg);
}
},
function failed(response){
deferred.reject(response.status);
}
)
}
return deferred.promise;
};
this.getUrlByObjectId = function(id){
var deferred = $q.defer();
$http.get("/api/getUrlByObjectId?id="+id).then(
function success(response){
var json = response.data;
if(json.status == 0){
deferred.promise({
url: "http://cdnimg.gifmiao.com/"+json.data.url
})
}else{
deferred.reject(json.msg);
}
},
function failed(response){
deferred.reject("failed" + response.status);
}
);
return deferred.promise();
}
}]);
但是IndexManageService 的这两种方法一直显示以下错误消息:
在 AngularJS 中使用 $q 我做错了什么?
【问题讨论】:
-
只需从 deferred.promise() 中删除括号 '()'
标签: angularjs promise angular-promise