Angular 2 Http, Observables y solicitudes recursivas

Tengo un punto final REST que devuelve una lista de elementos, un máximo de 1000 elementos a la vez. Si hay más de 1000 elementos, la respuesta tiene el estado HTTP 206 y hay unNext-Range encabezado que puedo usar en mi próxima solicitud para obtener más artículos.

Estoy trabajando en esouna aplicación Angular 2 y tratando de implementar esto conHttp yObservable. Mi problema es que no secómo fusionar múltiplesObservables dependiendo de cuántas páginas de artículos hay yfinalmente devolver unoObservable que mi componente puede suscribirse.

Aquí es donde obtuve mi implementación actual de 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();
}

Sin embargo, esto no funciona. Si lo entendí correctamente, unObservable se devuelve como el valor de la inicialObservable y no la variedad de artículos.

Respuestas a la pregunta(4)

Su respuesta a la pregunta