Aye*_*azo 17 javascript angularjs
从我正在研究的API我需要采用2个不同的列表,我需要接收20个项目的块,以避免服务器超时.
我实际构建的是这样的:
Items1.query().$promise
.then(function (data) {
$scope.items1 = data.list;
return Items2.query().$promise;
})
.then(function (data) {
$scope.items2 = data.list;
});
Run Code Online (Sandbox Code Playgroud)
使用此代码,我正在下载整个对象列表.
两个查询都返回:
{
list: [...],
next: true,
limit: 20,
last: 20
}
Run Code Online (Sandbox Code Playgroud)
基本上它是一个分页系统.
这两种服务都是这样的:
App.factory('Items1', ['$resource',
function($resource) {
return $resource('items1/:item1Id', { storeId: '@id'
}, {
query: {
method: 'GET',
isArray: false
},
update: {
method: 'PUT'
}
});
}
]);
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何使用$ resource创建递归函数,以便将这些项目推送到20个块中.
Jam*_*ley 12
我写了一个示例jsfiddle来显示递归的promises.将它转换为您的示例,它看起来像:
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;
});
Run Code Online (Sandbox Code Playgroud)
您需要修改角度资源,以允许您last在API调用中传递参数.我假设API,如果提供该参数,将返回从它开始的下一部分.
| 归档时间: |
|
| 查看次数: |
449 次 |
| 最近记录: |