2016-05-05 3 views
1

В основном $ HTTP я имел такой код (это услуга):AngularJS (Restangular): метод обслуживания обертывания в тайм-аут

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; 
} 

и я превратил его в restangular так:

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

вы должны использовать те же отсроченный он есть автоматически доцент .then() – Erez

+0

@Erez но restangular использование promisses по умолчанию ... – brabertaser19

+0

да, когда вы пользователь получить , но не получить некоторую функцию – Erez

ответ

1

Вы можете воспользоваться тем, что $timeout возвращает обещание:

function getSomeData() { 
    var user = Restangular.one('mylongurl'); 
    return $timeout(2000) 
     .then(function(){ 
      return user.get(); 
     }); 
} 

Старые версии Угловая еще может потребовать пустой функции передается в тайм-аут $timeout(function(){}, 2000), но если вы используете последнюю, который вы можете просто опустите его вообще.