# switchMapTo

<details>

<summary>Signatura</summary>

#### Firma

`switchMapTo<T, I, R>(innerObservable: any, resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction<T, I | R>`

#### Parámetros

#### Retorna

`OperatorFunction<T, I | R>`: Un Observable que emite elementos del `innerObservable` cada vez que el Observable fuente emite un valor. Se obtienen los valores del Observable interno más reciente.

</details>

## Descripción

Es como `switchMap`, pero siempre proyecta los valores sobre el mismo Observable interno.

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

Proyecta cada emisión de la fuente al Observable `innerObservable` proporcionado, independientemente del valor de la emisión, y posteriormente 'aplasta' los Observables internos resultantes en un solo Observable, el Observable resultante. El Observable resultante solo emite valores de la instancia más reciente de `innerObservable`.

## Ejemplos

**Proyectar cada click al mismo Observable interno, que emite un mensaje**

Si antes de que pasen dos segundos se vuelve a hacer click, switchMapTo cancelará la suscripción al Observable interno antiguo y se suscribirá al nuevo. Esto quiere decir que, si no se deja que pasen dos segundos sin hacer ningún click, nunca se verá el mensaje del Observable interno.

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

```typescript
import { fromEvent, of } from "rxjs";
import { delay, switchMapTo } from "rxjs/operators";

const click$ = fromEvent<MouseEvent>(document, "click");

const message$ = of("Hola, has hecho click :D").pipe(delay(2000));

click$.pipe(switchMapTo(message$)).subscribe(console.log);
// Salida: (click) (2s) 'Hola, has hecho click :D' (click) (1s) (click) (2s) 'Hola, has hecho click :D'...
```

**Cada 3 segundos, obtener los títulos de las 3 primeras películas de Ghibli**

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

### Ejemplo de la documentación oficial

**Reinicia un Observable intervalo con cada click**

```javascript
import { fromEvent, interval } from "rxjs";
import { switchMapTo } from "rxjs/operators";

const clicks = fromEvent(document, "click");
const result = clicks.pipe(switchMapTo(interval(1000)));
result.subscribe((x) => console.log(x));
```

<details>

<summary>Sobrecargas</summary>

#### Firma

`switchMapTo(observable: any): OperatorFunction<any, R>`

#### Parámetros

#### Retorna

`OperatorFunction<any, R>`

#### Firma

`switchMapTo(observable: any, resultSelector: undefined): OperatorFunction<T, R>`

#### Parámetros

#### Retorna

`OperatorFunction<T, R>`

#### Firma

`switchMapTo(observable: any, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction<T, R>`

#### Parámetros

#### Retorna

`OperatorFunction<T, R>`

</details>

### Recursos adicionales

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

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


---

# 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/transformation/switchmapto.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.
