我爲我的angularJS應用程序實施了一項小服務,該服務向我的服務器發送了一個http請求,用於發送幾個文本消息。這是我目前的執行:如何在http請求完成後從angularJS服務返回對象?
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請求完成?
尼斯,這是有道理的。但是,有沒有辦法將http請求保留在返回函數之外呢? –
太棒了。最後一個問題,如果你不介意。將'$ http.get'存儲到'posts'中時,是否正在執行查詢?或者直到我在我的控制器中調用'getList()'纔會執行它? –
@ByronS在工廠創建時執行。 – Joseph