在基本的$ http中我有这样的代码(这是一项服务):
var getSomeData = function() {
var deferred = $q.defer();
$timeout(function() {
$http.get('...mylongurl', {
headers: {
'Content-Type': 'application/json'
}
})
.success(function(response) {
deferred.resolve(response);
})
.error(function(error) {
deferred.reject(error);
});
}, 2000);
return deferred.promise;
}
然后我把它变成了反转角度,所以:
var getSomeData = function() {
var user = Restangular.one('mylongurl');
$timeout(function(){
return user.get().then(function (response) {
return response;
}, function(error){
return error;
});
}, 2000);
return user;
};
然后在控制器中使用它:
someService.getSomeData().then()...
但现在超时我得到:someService.getSomeData().then is not a function
答案 0 :(得分:1)
您可以利用$timeout
返回承诺的事实:
function getSomeData() {
var user = Restangular.one('mylongurl');
return $timeout(2000)
.then(function(){
return user.get();
});
}
较旧版本的角度可能仍需要传递给超时$timeout(function(){}, 2000)
的空函数,但如果您使用的是最近版本,则可以完全省略它。