gpt4 book ai didi

javascript - Angular $resource 递归查询

转载 作者:可可西里 更新时间:2023-11-01 01:18:45 26 4
gpt4 key购买 nike

从我正在处理的 API 中,我需要获取 2 个不同的列表,并且我需要获取 20 个项目的 block 以避免服务器超时。

我实际构建的是这样的:

Items1.query().$promise
.then(function (data) {
$scope.items1 = data.list;
return Items2.query().$promise;
})
.then(function (data) {
$scope.items2 = data.list;
});

使用这段代码,我正在下载整个对象列表。

两个查询返回:

{
list: [...],
next: true,
limit: 20,
last: 20
}

基本上它是一个分页系统。

两种服务都是这样的:

App.factory('Items1', ['$resource',
function($resource) {
return $resource('items1/:item1Id', { storeId: '@id'
}, {
query: {
method: 'GET',
isArray: false
},
update: {
method: 'PUT'
}
});
}
]);

我真的不知道如何使用 $resource 制作递归函数,以便将这些项目以 20 个为一组推送。

最佳答案

我写了一个例子jsfiddle显示递归 promise 。为您的示例转换它,它看起来像:

function getList(resource, list, last) {
return resource.query({last: last}).$promise.then(function(data){
list = list.concat(data.list);
if (data.next) {
return getList(resource, list, data.last);
}
return list;
});
}

getList(Items1, [], 0).$promise.then(function(list) {
$scope.items1 = list;
});
getList(Items2, [], 0).$promise.then(function(list) {
$scope.items2 = list;
});

您需要修改 Angular 资源以允许您在 API 调用中传递 last 参数。我假设 API(如果提供了该参数)将返回从它开始的下一部分。

关于javascript - Angular $resource 递归查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32935820/

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