# Argumentos subscribe

Es posible que se haya visto que algunas firmas del método `subscribe` están obsoletas, lo que puede haber causado confusión. El método `subscribe` en sí no está obsoleto. Este cambio afecta también al operador tap, ya que tap posee la misma firma que el método `subscribe`.

Este cambio existe en preparación para un futuro en el que se permitirá la configuración de `subscribe` mediante el segundo argumento, para casos como `AbortSignal` o similares (por ejemplo `source$.`subscribe`(fn, { signal })`). Este cambio también se ha hecho debido a que tener 2-3 argumentos puede hacer que el código sea poco legible. Por ejemplo, se podrían elegir nombres poco adecuados para las funciones y confundir al lector:

`source$.subscribe(doSomething, doSomethingElse, lol)`

Con esta firma, se necesita conocer el funcionamiento de `subscribe`, mientras que si se utiliza un observador parcial no es necesario:

`source$.subscribe({ next: doSomething, error: doSomethingElse, complete: lol })`

> Este cambio se introdujo en RxJS 6.4.

En resumen, todas las firmas en las que se especifica una callback `error` o `complete` anónima y se pasa una función vacía a una de las callbacks están obsoletas.

## Qué firmas han sido afectadas

Todas las firmas de `suscribe` que reciben más de un argumento ahora están obsoletas.

Las firmas para pasar únicamente la callback `complete` están obsoletas.

```
import { of } from 'rxjs';

// Obsoleto
of([1,2,3]).subscribe(null, null, console.info); // difficult to read
// Sugerencia
of([1,2,3]).subscribe({complete: console.info});
```

De manera parecida, las firmas para pasar únicamente la callback `error` están obsoletas.

```
import { throwError } from 'rxjs';

// Obsoleto
throwError('I am an error').subscribe(null, console.error);

// Sugerencia
throwError('I am an error').subscribe({error: console.error});
```

En general se recomienda utilizar la función anónima solo si se especifica la callback `next`. En cualquier otro caso se recomienda pasar un Observador.

```
import { of } from 'rxjs';

// Recomendado
of([1,2,3]).subscribe((v) => console.info(v));

// También se recomienda
of([1,2,3]).subscribe({
next: (v) => console.log(v),
error: (e) => console.error(e),
complete: () => console.info('complete')
})
```


---

# 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/guias/breaking-changes/subscribe-argument.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.
