Я реализую небольшую услугу для своего приложения angularJS, которое делает HTTP-запрос на мой сервер для нескольких текстовых сообщений. Вот моя текущая реализация:Как вернуть объект из службы angularJS ПОСЛЕ HTTP-запроса?
app.factory("postFetcher", ['$http', function($http){
var posts;
$http.get('https://cdn.contentful.com/spaces/k2mwszledbge/entries?access_token=afa8ba8572bb0232644d94c80cfd4ae01314cd0589b98551147aab50f7134e30')
.then(function(response){
posts = response.data.items;
});
return {
getList: function(){
return posts;
}
}
}]);
Проблема с этим состоит в том, что запрос HTTP не завершен к тому времени, которое возвратило posts
массив. Моя интуиция подсказывает мне поместить функцию возврата в функцию http .then
, чтобы она возвращалась только после завершения запроса, однако это недопустимо.
Есть ли способ, которым я могу отложить возврат posts
до тех пор, пока HTTP-запрос не будет завершен?
Nice, это имеет смысл. Однако существует ли способ сохранить HTTP-запрос вне функции возврата? –
Awesome. Последний вопрос, если вы не возражаете. Когда вы храните '$ http.get' в' posts', действительно ли выполняется запрос? Или это не выполняется, пока я не назову 'getList()' в моем контроллере? –
@ByronS выполняется при создании фабрики. – Joseph