Рекурсивный топор ios вызовов - PullRequest
2 голосов
/ 11 июля 2020

Я пытаюсь вернуть все команды в спортивный дивизион. API выглядит следующим образом:

Call /api/divs/ID, который возвращает

  • список подразделений (.divInfo)
  • список команд в этом подразделении. (.teams)

Например, я назвал его с помощью Division 1 (55720), что дало мне все регионы, а также пару команд.

enter image description here From any division, I am trying to assemble the complete list of teams in that division, including subdivisions.

Here is my code:

async getSubteams(id) {
    let vm = this
    return await this.$axios.get(`/api/div/${id}`).then(r => {
        let additionalTeams = r.data.divInfo.map(subDivision => vm.getSubteams(subDivision.DivIDDivision))
        return r.data.teams.concat(...additionalTeams)
    })
}
const teams = await this.getSubteams(this.id)

This does not give me the expected output of a list of team objects. Instead, it is a mix between Promises and teams.

введите описание изображения здесь

Я знаю, что это неправильно запрограммировано, но как я могу сохранить асинхронность этого (т.е. одновременное выполнение нескольких вызовов api) при получении обычного списка без обещаний.

I обсуждали возврат обещаний с последующим использованием Promises.all(...), но это не казалось лучшим подходом.

1 Ответ

0 голосов
/ 11 июля 2020

Promise.all было ключом.

async getSubteams(id) {
    let vm = this
    return await this.$axios.get(`/api/div/${id}`).then(async r => {
        let additionalTeams = await Promise.all(r.data.divInfo.map(subDivision => {
            return vm.getSubteams(subDivision.DivIDDivision)
        }))
        return r.data.teams.concat(...additionalTeams)
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...