我正在使用一个名为node-github的 NodeJS 模块,它是Github API的包装器,以获取有关某些用户的一些统计信息,例如他们的关注者:
var getFollowers = function(user, callback) {
github.user.getFollowers(user, function(err, res) {
console.log("getFollowers", res.length);
callback(err, res);
});
};
...
getFollwers({user: mike}, function(err, followers) {
if(err) {
console.log(err);
}
else {
console.log(followers);
}
});
显然,Github 将调用结果限制为最多 100 个(通过per_page
参数),并利用Link 标头让您知道存在“下一页”结果。
我使用的模块提供了几种简单的方法来处理 Link 标头,因此您不需要解析它。基本上,您可以致电github.hasNextPage(res)
或github.getNextPage(res)
(res
您从原始github.user.getFollowers()
电话中收到的回复在哪里)
我正在寻找的是让我的函数返回由所有页面组成的所有结果的正确方法/范式。我涉足了一个递归函数,虽然它有效,但我不禁觉得可能有更好的方法。
如果标准流行起来,这个答案可以作为处理所有未来 Link 标头调用的好方法——不仅仅是 Github 的。
谢谢!