Как получить реальный ответ на вызов api «$http», в котором статус ответа «ПОЛУЧЕН», а не «ИНИЦИИРОВАН»?

#angularjs #http-get

Вопрос:

В настоящее время я работаю над этой проблемой, чтобы получать оперативные данные с помощью API. Данные довольно большие, и вызов занимает не более 2-3 минут.

Поэтому у меня есть фрагмент кода ниже

 getLiveData : function(path, timeout) {  return $http({  method : 'GET',  url : path,  withCredentials: true,  timeout: (timeout) ? timeout : 700000,  }).then(function success(response) {  $log.debug("Success GET API call -gt; "   path);  return response;  }, function error(response) {  if (response) {  return response;  }  });  }  

Я хочу подождать и получить данные после того, как вызов будет выполнен и завершен в фоновом режиме; однако после совершения getLiveData вызова он сразу переходит к success указанию, что вызов «успешно инициирован». и никогда не возвращайте мне нужные данные.

Контроллер был написан кем — то в компании, и он ушел. Код приведен ниже:

 $scope.deviceSelected = function (device) {    deviceSelectedUrl = "blah";    // Need to find out how to wait for the promise to resolve before setting the data.  restService.getLiveData(deviceSelectedUrl).then(function (result) {   let status = result.data.data.status;     if (status == "RECEIVED") {   generateSuccessMessage('All Objects Loaded');  retrieveAndSetObj(result.data.data.liveData.devices);  return;  }  if (status !== "RECEIVED") {  generateInfoMessage('Returning Object Set, Please Wait');  setTimeout(function () {  $scope.deviceSelected(device);  }, 30000);  }  })  };   

Поэтому, по-видимому, он вызывает функцию каждые 30 секунд, пока она не поймает ответ, данный вызовом API, когда статус вызова «ПОЛУЧЕН». Должен ли быть какой-то более элегантный/правильный подход для этого?

Я попытался немного повозиться interceptors , но он по-прежнему улавливает ответ/статус вызова api только после его инициирования.

Пожалуйста, подскажите мне, на чем мне следует сосредоточиться, чтобы посмотреть.