需求:利用Github V3版本的API,获取某个用户star的项目个数。
而用户的api并没有单独提供star个数,而是提供了这样的接口"starred_url": "https://api.github.com/users/tj/starred{/owner}{/repo}"
查了一下,,github api采用分页技术,如果用上述默认接口,最多只能返回30条内容。因而需要利用参数获取:https://api.github.com/users/tj/starred?page=1&per_page=100
,per_page最大可为100.
也就是说我需要这样GET多个接口,直到获取的接口返回[ ]
:axios.get(`/users/${app.userName}/starred?page=${i++}&per_page=100`)
循环程序是同步执行的,GET请求是异步获取。然而我的循环变量与异步获取的数据有关!那么循环代码要怎么写呢?
下面是我用递归写的代码,不过处理得很慢。。这是demo,可以输入tj试一下,很慢的。
let starredLists = [] !function getStarred(index){ axios.get(`/users/${app.userName}/starred?page=${index++}&per_page=100`) .then(function(response){ starredLists.push(...response.data) console.log(starredLists.length + ' ' + index) if(response.data.length == 100) getStarred(index); if(response.data.length != 100) app.stars = starredLists.length; }) }(1)
汪汪一只猫
慕桂英3389331
相关分类