Не удается получить ответ от разбитого на страницы API с помощью axios

Я пытаюсь использовать рекурсивную функцию для использования конечной точки, и у меня возникают проблемы с получением конечных данных. Если я использую это:

let b0 = []
const paginatedAPI = (uri, arr) => {
  axios.get(uri)
  .then(resp => {
    //console.info(resp.data.info.next)
    arr = [...arr,...resp.data.results]
    //console.info(arr)
    if (resp.data.info.next){
      paginatedAPI(resp.data.info.next,arr)
    }
    return arr
  })
  .catch(error => console.info(error))
  return arr
}

b0 = paginatedAPI('https://rickandmortyapi.com/api/character',b0)

и раскомментируйте операторы ведения журнала, очевидно, что массив заполняется правильно, но, конечно, он пуст, когда я оцениваю его в инструментах разработчика. я сначала попытался запустить этот код, который отлично работает, но кажется неправильным:

axios.get('https://rickandmortyapi.com/api/character')
.then(response => {
  console.info(response)
  let numPages = response.data.info.pages
  a0 = [...response.data.results]
  for(let i = 2;i <= numPages;i++){
    axios.get(`https://rickandmortyapi.com/api/character?page=${i}`)
    .then(resp => populateDropDown(a0 = [...a0,...resp.data.results]))
  }
})
.catch(data => {
  const htmlStr = '<div class = "text-danger">We\'re sorry, but an unexpected error occurred</div>';
  $('.container').append(htmlStr);
});

Я пытался найти решение, которое является голым, но пока не повезло. Спасибо.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После дальнейших исследований и просмотра промисов и async/await я все еще чувствовал, что мне просто нужно где-то захватывать данные, поэтому я, наконец, попробовал это:

let b0 = []

const paginatedAPI = (uri, arr) => {
   axios.get(uri)
  .then(resp => {
    arr = [...arr,...resp.data.results]
    if (resp.data.info.next){
      paginatedAPI(resp.data.info.next,arr)
    }
    b0 = arr
  })
  .catch(error => console.info(error))
}

paginatedAPI('https://rickandmortyapi.com/api/character',b0)

И это работает! Спасибо

Другие вопросы по теме