#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 только после его инициирования.
Пожалуйста, подскажите мне, на чем мне следует сосредоточиться, чтобы посмотреть.