gpt4 book ai didi

javascript - 在具有多个 $http.get 的服务中使用带有闭包的 Promise

转载 作者:行者123 更新时间:2023-12-03 08:16:57 24 4
gpt4 key购买 nike

我已经到处搜索,但我似乎无法专注于 q.defer() 并创建自己的 promise 。

我有一个服务 getDataService ,它正是执行此操作 - 来自 REST 服务器的 $http.gets 数据。然而,一次只能发送每个变量之一,因此如果用户想要向服务器查询两个实体并返回整个关联数据,他们必须发送两个请求。因此,我必须使用一种方法,将 i 保留为实际计数(闭包),然后运行我的获取数据函数适当的次数:

keepICorrect: function (security) {
var self = this;
for (var i = 0 ; i < entity.length; i++) {
self.getDataFromREST(security, i);
}
},

我在主 Controller 中将此称为 promise :

$scope.apply = function (security) {

var myDataPromise = getDataService.keepICorrect(security);
myDataPromise.then(function () {

//DO STUFF

}, 1);
}, function (error) {
alert("Error Retrieving Data");
return $q.reject(error);
});
}

这在使用 .getDataFromREST() 时有效,但现在显然不行,因为我必须通过新的循环函数 keepICorrect() 进行路由。

我的问题是,我到底如何创建一个从我的服务到我的 Controller 的 promise ,但不仅如此,还等待解决或失败,具体取决于i数量的请求是否已完成完成了吗?

最佳答案

您需要创建一系列 promise

keepICorrect: function (security) {
var self = this;
var promises = [];
for (var i = 0 ; i < entity.length; i++) {
promises.push(self.getDataFromREST(security, i));
}
return promises;
},

然后等待所有这些都在 Angular 中使用 $q 库完成

$q.all(getDataService.keepICorrect(security))
.then(....

关于javascript - 在具有多个 $http.get 的服务中使用带有闭包的 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33891647/

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