angular
December 25, 2024

Различия toSignal() и toSyncSignal() в Angular

Оба метода (toSignal и toSyncSignal) позволяют преобразовать Observable в Signal, но они имеют разные требования к синхронности и способу обработки начального значения.


toSignal

  • toSignal преобразует Observable в Signal.
  • По умолчанию не требует синхронного значения от Observable.
toSignal<T>(
  source: Observable<T>,
  options?: ToSignalOptions<T>
): Signal<T>

Options:

  • initialValue?: T: Начальное значение сигнала, если Observable ещё не эмитировал ни одного значения.
  • requireSync?: boolean: Требует, чтобы Observable синхронно отправил первое значение при вызове.

Когда использовать?

  • Когда не гарантировано синхронное первое значение от Observable.
  • Когда необходимо задать initialValue, чтобы избежать неопределённости.


toSyncSignal

это специальная версия toSignal, которая требует синхронного первого значения от Observable.

toSyncSignal<T>(
  source: Observable<T>
): Signal<T>

Основные отличия:

  1. Требование синхронного значения: Observable обязан эмитировать первое значение немедленно.
  2. Отсутствие initialValue: Нельзя задать начальное значение вручную.

Когда использовать?

  • Когда ты уверен, что Observable всегда синхронно эмитирует первое значение.
  • Например, при использовании of, BehaviorSubject или синхронных стримов.