Javascript 事后用承诺分页

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', {

我有一个我想分页的函数,我刚刚发现GitHub API最多只能通过他们的repos请求推送30个条目

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次的小提琴当您谈论“不同的小提琴”时,不知道您在谈论什么。。。和什么不同?