Of e From | Rxjs
- Of e From | Rxjs
✅ of()
Cria um Observable a partir de valores literais (primitivos ou objetos).
import { of } from 'rxjs';
of(1, 2, 3).subscribe(console.log);
// Saída: 1, 2, 3
- Emite os valores exatamente como foram passados.
- Se você passar um array, ele será emitido como um único valor:
of([1, 2, 3]).subscribe(console.log);
// Saída: [1, 2, 3]
✅ from()
Cria um Observable a partir de um iterável, array, Promise, ou objeto com Symbol.iterator.
import { from } from 'rxjs';
from([1, 2, 3]).subscribe(console.log);
// Saída: 1, 2, 3
- Se você passar um array, ele será desestruturado e emitido item por item.
- Se você passar uma
Promise, ele vai emitir o resultado da promise e completar.
from(Promise.resolve('hello')).subscribe(console.log);
// Saída: hello
📌 Diferença-chave
| Entrada | of() | from() |
|---|---|---|
1, 2, 3 | emite 1, 2, 3 | ❌ erro (espera 1 valor, não múltiplos) |
[1, 2, 3] | emite [1, 2, 3] (um único array) | emite 1, 2, 3 |
Promise.resolve(4) | emite a Promise como valor | emite o resultado da Promise |
🧠 Regra de ouro:
- Use
**of**quando quiser emitir exatamente o que você passar. - Use
**from**quando quiser converter uma coleção, iterável ou promise em uma sequência de valores emitidos.