Сохранить и объединить данные из запросов, вызванных рекурсивно, в один массив

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

то есть, если был только один запрос, то в array будет три элемента, если было 5 запросов, то соответственно в array будет 15 элементов

пробовала методом concat(), но в результате всегда пустой массив только подскажите, как сохранить данные , приходящие со всем запросов?

  const sendRequest = () => {
    const array = []
    fetch(`${api}/tickets?id=${localStorage.getItem('id')}`)
    .then(response => response.json())
    .then(items => {
      if (!items.stop) {
        sendRequest()
        return array.concat(items.tickets)
      }
    })
    .catch(() => errorHandling(true))
  }

Ответы (1 шт):

Автор решения: Grundy

Проблема заключается в том, что array создается при каждом вызове sendRequest - соответственно происходит всего одна добавка, и далее с этим массивом ничего не происходит.

Для решения, нужно либо передавать его извне и накапливать результат

Например:

const sendRequest = (array) => {
  fetch(`${api}/tickets?id=${localStorage.getItem('id')}`)
    .then(response => response.json())
    .then(items => {
      if (!items.stop) {
        array.push(...items.tickets)
        sendRequest(array)
      }
    })
    .catch(() => errorHandling(true));
}

либо возвращать результат из функции sendRequest.

const sendRequest = async () => {
    try {
        const response = await fetch(`${api}/tickets?id=${localStorage.getItem('id')}`);
        const items = response.json();
        if (!items.stop) {
            return items.tickets.concat(await sendRequest());
        }
        return items.tickets;
    catch() {
        errorHandling(true);
    }

    return [];
}
→ Ссылка