# combineAll

<details>

<summary>Signatura</summary>

#### Firma

`combineAll<T, R>(project?: (...values: any[]) => R): OperatorFunction<T, R>`

#### Parámetros

#### Retorna

`OperatorFunction<T, R>`

</details>

## Descripción

![Diagrama de canicas del operador combineAll](https://github.com/puntotech/rxjs-docu/blob/master/doc/operators/combination/assets/images/marble-diagrams/join-creation/combineAll.png)

`combineAll` recibe un Observable de Observables y recoge todos los Observables que contenga. Una vez que el Observable externo se haya completado, se suscribe a todos los Observables recogidos y combina sus valores mediante la estrategia `combineLatest`, de manera que:

* Cada vez que un Observable interno emite, el Observable resultante emite.
* Cuando el Observable retornado emite, emite todos los valores recientes de manera que:
  * Si se proporciona una función `project`, se llama a dicha función con cada valor de cada Observable interno en el orden en el que llegaron, y el resultado de la función de proyección es lo que se emite en el Observable resultante.
  * Si no se proporciona una función `project`, el Observable resultante emite un array de todos los valores recientes.

## Ejemplos

**combineAll espera a recibir todos los valores, y los combina en un array**

[StackBlitz](https://stackblitz.com/edit/rxjs-combineall-1?file=index.ts)

```javascript
import { of } from "rxjs";
import { ajax } from "rxjs/ajax";
import { map, delay, combineAll } from "rxjs/operators";

const pokemonId$ = of(1, 5, 6);

function getPokemonName(id: number) {
  return ajax.getJSON(`https://pokeapi.co/api/v2/pokemon/${id}`).pipe(
    map(({ name }) => name),
    delay(2000)
  );
}

pokemonId$
  .pipe(
    map((id) => getPokemonName(id)),
    combineAll()
  )
  .subscribe(console.log);
// Salida: (2s) ['bulbasaur', 'charmeleon', 'charizard']
```

### Ejemplo de la documentación oficial

**Proyectar dos eventos click sobre un Observable intervalo, y aplicar combineAll**

```javascript
import { fromEvent, interval } from "rxjs";
import { map, combineAll, take } from "rxjs/operators";

const clicks = fromEvent(document, "click");
const higherOrder = clicks.pipe(
  map((ev) => interval(Math.random() * 2000).pipe(take(3))),
  take(2)
);
const result = higherOrder.pipe(combineAll());

result.subscribe((x) => console.log(x));
```

<details>

<summary>Sobrecargas</summary>

#### Firma

`combineAll(): OperatorFunction<ObservableInput<T>, T[]>`

#### Parámetros

No recibe ningún parámetro.

#### Retorna

`OperatorFunction<ObservableInput<T>, T[]>`

#### Firma

`combineAll(): OperatorFunction<any, T[]>`

#### Parámetros

No recibe ningún parámetro.

#### Retorna

`OperatorFunction<any, T[]>`

#### Firma

`combineAll(project: (...values: T[]) => R): OperatorFunction<ObservableInput<T>, R>`

#### Parámetros

#### Retorna

`OperatorFunction<ObservableInput<T>, R>`

#### Firma

`combineAll(project: (...values: any[]) => R): OperatorFunction<any, R>`

#### Parámetros

#### Retorna

`OperatorFunction<any, R>`

</details>

### Recursos adicionales

[![Source code](https://github.com/puntotech/rxjs-docu/blob/master/doc/operators/combination/assets/icons/source-code.png)](https://github.com/ReactiveX/rxjs/blob/master/src/internal/operators/combineAll.ts)

[Documentación oficial en inglés](https://rxjs.dev/api/operators/combineAll)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.rxjs.es/operadores/combination/combineall.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
