我的场景是我想使用 ngResource 从 Google Drive 中检索文件列表。Drive 通过在 JSON 响应中包含 nextPageToken 对其结果进行分页,null 表示没有更多结果。
我需要一个涉及所有页面完成的承诺或回调,而不是在每个页面之后。ngResource 有没有一种优雅的方式来处理这个问题?
我的场景是我想使用 ngResource 从 Google Drive 中检索文件列表。Drive 通过在 JSON 响应中包含 nextPageToken 对其结果进行分页,null 表示没有更多结果。
我需要一个涉及所有页面完成的承诺或回调,而不是在每个页面之后。ngResource 有没有一种优雅的方式来处理这个问题?
我不认为 ngResource 默认情况下会固有地为你做这样的事情,但你可以通过使用递归闭包并在其中调用 ngResource 来做到这一点,直到你获得所有你想要的数据。
var dataSet = [];
function getAllData(){
var files = $resource('your url');
files.get(function(data){
if (data){
dataSet.push(data); //or whatever
getAllData();
}
})();
}
这是具有实际 Google Drive 语义的测试版本
getAllFiles(nextLink:string){
var self = this;
if (nextLink) {
var files = self.refs.resource(nextLink);
} else {
var files = self.refs.resource(this.DRIVE_URL);
}
files.get(function(data){
console.log("fetched "+data.items.length);
self.allFiles.push(data['items']);
if (data['nextLink']){
self.getAllFiles(data['nextLink']);
}
});
}