gpt4 book ai didi

javascript - http请求完成后如何从angularJS服务返回对象?

转载 作者:行者123 更新时间:2023-11-29 16:55:35 25 4
gpt4 key购买 nike

我正在为我的 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;
}
}
}]);

问题在于当返回 posts 数组时 http 请求尚未完成。我的直觉告诉我将返回函数放在 http .then 函数中,以便它仅在请求完成后返回,但这是不允许的。

有什么方法可以延迟 posts 的返回,直到 http 请求完成?

最佳答案

使用promise这是我看到的一种方式:
工厂:

app.factory("postFetcher", ['$http', '$q', function($http, $q){
var posts;

return {
getList: getListFn
};

function getListFn(){
var defer=$q.defer();

$http.get('https://cdn.contentful.com/spaces/k2mwszledbge/entries?access_token=afa8ba8572bb0232644d94c80cfd4ae01314cd0589b98551147aab50f7134e30')
.then(function(response){
if(response && response.data && response.data.items){
posts = response.data.items;
defer.resolve(posts);
}
});

return defer.promise;
};
}]);

在 Controller 中使用:

postFetcher.getList().then(function(data){
//data processing;
});

关于javascript - http请求完成后如何从angularJS服务返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32429808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com