arm*_*ong 2 promise angularjs angular-promise
我定义了以下IndexMangeService服务,希望预先检查输入参数并在$http请求后返回承诺。
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();
}
}]);
Run Code Online (Sandbox Code Playgroud)
但是这两种方法IndexManageService不断显示以下错误消息:
我在 AngularJS 中使用 $q 做错了什么?
正如你的错误所说,promise in not a function。
在getUrlByObjectId()功能上,更改:
return deferred.promise();
Run Code Online (Sandbox Code Playgroud)
到
return deferred.promise;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2030 次 |
| 最近记录: |