Javascript 事后用承诺分页
我有一个我想分页的函数,我刚刚发现GitHub API最多只能通过他们的repos请求推送30个条目Javascript 事后用承诺分页,javascript,pagination,Javascript,Pagination,我有一个我想分页的函数,我刚刚发现GitHub API最多只能通过他们的repos请求推送30个条目 getRepos this.getRepos = function(username, siteAndPassword) { // Pagination return new Promise((resolve, reject) => { axios.get('https://api.github.com/user/repos', {
getRepos
this.getRepos = function(username, siteAndPassword) {
// Pagination
return new Promise((resolve, reject) => {
axios.get('https://api.github.com/user/repos', {
auth: { username: username, password: siteAndPassword.password }
})
.then((response) => {
resolve(response.data)
})
.catch((error) => {
reject(error)
})
})
}
在我的命令行输入提示函数passwordPrompt
的内部。然后调用
passwordPrompt(site)
.then((siteAndPassword) => {
// Auth the user with given password (basic HTTP)
return API.GitHub.getRepos(user, siteAndPassword)
})
.catch((error) => {
console.log(error)
process.exit()
})
.then((repos) => { ... /* Do more crazy stuff with the data */ }
这是我的分页尝试,我将per_page
设置为1
,这样我可以测试它,函数应该记录currentPage八次,但我只得到一个空白控制台
this.getRepos = function(username, siteAndPassword) {
// Pagination
return new Promise((resolve, reject) => {
var currentPage = 1
var fullList = []
axios.get('https://api.github.com/user/repos', {
auth: { username: username, password: siteAndPassword.password },
params: { page: currentPage, per_page: 1 }
})
.then((response) => {
if (response.data.length == 0) {
resolve(fullList)
} else {
console.log(currentPage)
currentPage += 1
axios.get('https://api.github.com/user/repos', {
auth: { username: username, password: siteAndPassword.password },
params: { page: currentPage, per_page: 100 }
})
.then((response) => {
response.data.forEach((item) => {
fullList.push(item)
})
})
.catch((error) => {
console.log(error)
})
}
})
.catch((error) => {
reject(error)
})
})
}
你应该只返回承诺-没有承诺构造函数,就没有解析函数-这不是你的代码的问题(正如我已经说过的)-你的代码的问题是你的代码会从第1页得到1个项目,然后从第2页得到100个项目-就是这样,如果有任何项目要得到,承诺永远不会解析,因为你只有在第一个Get中没有项目的情况下才能解决返回的承诺我不需要放松-你误解了-我正在删除那些没有帮助的评论-你需要放松自己,sparkysure,不要让我生气-小提琴中的逻辑是合理的,我已经对axios进行了模拟。如果您感兴趣,请拨打电话并进行测试-这是一款不能每页使用1次的小提琴当您谈论“不同的小提琴”时,不知道您在谈论什么。。。和什么不同?