2016-08-30 5 views
0

Я хочу, чтобы мой передний конец приложение, чтобы иметь возможность переключиться на другой апи в случае первого понижением

Например: Я называю https://api.example.com/users?name=bob - тогда я получаю net::ERR_CONNECTION_TIMED_OUT (XHR-ответ Chrome), что указывает на то, что api не реагирует. Теперь я хотел бы, чтобы мой front-end вызывал https://api1.example.com/users?name=bob.

Я рассмотрел документацию для ресурса AngularJS 1.5.7 $, в которой говорится, что для параметра принимается параметр действия timeout типа {number}. Однако, установив его, например, 500, все еще бросает net::ERR_CONNECTION_TIMED_OUT примерно через 2 минуты!

Wanted потока:

  1. Задать https://api.example.com/users?name=bob
  2. Если не ответили в течение 10 секунд:
  3. продолжают спрашивать APIX в то время как я до сих пор движки

псевдокод:

angular.forEach(fallback_urls, function(url) { 
    $resource(url + '/users?name=bob', {}, {timeout: 10}).get() 
}); 

ответ

1

Вы заявили свои действия неправильно на вашем $ ресурсе.

$resource(url + '/users?name=bob', {}, { 
    'get': { 
     method: 'GET', 
     timeout: 10000 
    } 
}); 

Возможно, вы также захотите изучить вариант «отмены».

var res = $resource(url + '/users?name=bob', {}, { 
    'get': { 
    method: 'GET', 
    cancellable: true 
    } 
}); 

var response = res.get(); 
var timeoutPromise = $timeout(function(){ 
    response.$cancelRequest(); 
},10000); 

response.$promise.then(function(){ 
    $timeout.cancel(timeoutPromise); 
}); 

И затем каким-то образом прокрутите объявленные объекты резервного ресурса $ resource. И, разумеется, прекратите таймаут, если вызов разрешится! Надеюсь, это даст вам некоторые подсказки!

 Смежные вопросы

  • Нет связанных вопросов^_^