Angular 2 Http, Observables и рекурсивные запросы

У меня есть конечная точка REST, которая возвращает список элементов, максимум 1000 элементов за раз. Если имеется более 1000 элементов, ответ имеет статус HTTP 206, и естьNext-Range заголовок, который я могу использовать в своем следующем запросе для получения большего количества предметов.

Я работаю наприложение Angular 2 и пытается реализовать это сHttp а такжеObservable, Моя проблема в том, что я не знаюкак объединить несколькоObservables в зависимости от того, сколько страниц элементов инаконец вернуть одинObservable что мой компонент может подписаться.

Вот где я получил мою текущую реализацию TypeScript:

// NOTE: Non-working example!

getAllItems(): Observable<any[]> {
  // array of all items, possibly received with multiple requests
  const allItems: any[] = [];

  // inner function for getting a range of items
  const getRange = (range?: string) => {
    const headers: Headers = new Headers();
    if (range) {
      headers.set('Range', range);
    }

    return this.http.get('http://api/endpoint', { headers })
      .map((res: Response) => {
        // add all to received items
        // (maybe not needed if the responses can be merged some other way?)
        allItems.push.apply(allItems, res.json());

        // partial content
        if (res.status === 206) {
          const nextRange = res.headers.get('Next-Range');

          // get next range of items
          return getRange(nextRange);
        }

        return allItems;
      });
  };

  // get first range
  return getRange();
}

Тем не менее, это не работает. Если я правильно понял,Observable возвращается как значение исходногоObservable а не массив предметов.

Ответы на вопрос(4)

Ваш ответ на вопрос