# Subscription

## Subscription

### Representa un recurso desechable, como es la ejecución de un Observable. La Suscripción posee un método importante, `unsubscribe`, que no recibe ningún argumento y se encarga de desechar el recurso que representa la Suscripción

```typescript
class Subscription implements SubscriptionLike {
static EMPTY: Subscription
constructor(unsubscribe?: () => void)
closed: [object Object]
unsubscribe(): void
add(teardown: TeardownLogic): Subscription
remove(subscription: Subscription): void
}
```

## Subclases

[Subscriber](https://github.com/puntotech/rxjs-docu/blob/master/doc/api/index/api/index/Subscriber/README.md)

### Descripción

Adicionalmente, las suscripciones se pueden agrupar mediante el método `add()`, que adjunta una Suscripción hija a la Suscripción actual. Cuando se cancela una Suscripción, también se cancela la de todos sus hijos (y nietos.)

### Propiedades Estáticas

| Propiedad | Tipo           | Descripción |
| --------- | -------------- | ----------- |
| EMPTY     | `Subscription` |             |

### Constructor

| constructor()                                                           |
| ----------------------------------------------------------------------- |
| <h4>Firma</h4><p><code>constructor(unsubscribe?: () => void)</code></p> |

#### Parámetros

| unsubscribe | Opcional. El valor por defecto es `undefined`. Una función que describe cómo llevar a cabo el desecho de recursos cuando el método `unsubscribe` es llamado. |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |

### Propiedades

| Propiedad | Tipo              | Descripción                                      |
| --------- | ----------------- | ------------------------------------------------ |
| closed    | `[object Object]` | Indica si la Suscripción ha sido cancelada o no. |

### Métodos

| unsubscribe()                                                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Desecha los recursos representados por la Suscripción. Puede, por ejemplo, cancelar una ejecución Observable o cualquier otro tipo de trabajo que comenzase a partir de la creación de la Suscripción. |
| <h4>Firma</h4><p><code>unsubscribe(): void</code></p><h4>Parámetros</h4><p>No recibe ningún parámetro.</p><h4>Retorna</h4><p><code>void:</code></p>                                                    |

| add()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |                                                                                            |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Añade un *teardown* que será llamado durante el `unsubscribe()` de esta Suscripción. También se puede utilizar para añadir una Suscripción hija.                                                                                                                                                                                                                                                                                                                                                         |                                                                                            |
| <h4>Firma</h4><p><code>add(teardown: TeardownLogic): Subscription</code></p><h4>Parámetros</h4><h4>Retorna</h4><p><code>Subscription</code>: Retorna la Suscripción utilizada o creada para ser añadida a la lista de Suscripciones internas. Esta Suscripción puede utilizarse junto a <code>remove()</code> para eliminar la lógica de <em>teardown</em> proporcionada de la lista de Suscripciones internas.</p>                                                                                      |                                                                                            |
| teardown                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | La lógica adicional a ejecutar durante el *teardown* (proceso de eliminación de recursos.) |
| <p>Si el <em>teardown</em> que se quiere añadir es una Suscripción que ya ha sido cancelada, es la misma referencia que la referencia desde la que se está llamando <code>add</code> o es <code>Subscription.EMPTY</code>, no será añadido.</p><p>Si esta Suscripción está en un estado cerrado, la lógica de <em>teardown</em> proporcionada será ejecutada inmediatamente.</p><p>Cuando se cancela una Suscripción padre, cualquier Suscripción hija que se le hubiese añadido también se cancela.</p> |                                                                                            |

| teardown | La lógica adicional a ejecutar durante el *teardown* (proceso de eliminación de recursos.) |
| -------- | ------------------------------------------------------------------------------------------ |

| remove()                                                                                                                                 |                                 |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
| Elimina una Suscripción de la lista interna de Suscripciones que serán canceladas durante el proceso de cancelación de esta Suscripción. |                                 |
| <h4>Firma</h4><p><code>remove(subscription: Subscription): void</code></p><h4>Parámetros</h4><h4>Retorna</h4><p><code>void:</code></p>   |                                 |
| subscription                                                                                                                             | La suscripción a ser eliminada. |

### Recursos adicionales

[![Source code](https://github.com/puntotech/rxjs-docu/blob/master/doc/api/index/assets/icons/source-code.png)](https://github.com/ReactiveX/rxjs/blob/6.5.5/src/internal/Subscription.ts#L6-L207)

[Documentación oficial en inglés](https://rxjs.dev/api/index/class/Subscription)


---

# 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/api/indice/subscription.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.
