Разница между новыми Observable (...) и Rx.Observable.create(...)?

Я обновляю наше программное обеспечение, заменяя все promises (и другие волосатые мусор) для наблюдаемых. Чтобы убедиться, что я следую передовым методам, я сделал быстрый googlearch и заметил, что в в некоторых случаях предлагаемый синтаксис является экземпляром, тогда как в другие случаи, примеры выполняют вызов factory.

const byInstance = new Observable(_ => { ... });

const byFactory = Rx.Observable.create(_ => { ... });

Мне любопытно, какова реальная разница. Являются ли они абсолютно взаимозаменяемыми? Является ли это синтаксисом/подходом более старого/нового? Связана ли структура? И, конечно, что должно быть предпочтительнее ( при условии, что это не упрямый, спорный и т.д.).

Ответ 1

Нет никакой разницы. Observable.create вызывает new Observable.

Как руководство говорит,

Наблюдения создаются с использованием Rx.Observable.create или создания Оператор

<... >

Rx.Observable.create - это псевдоним для конструктора Observable

Observable.create обычно используется, вероятно, потому, что он лучше читается в цепочках и соответствует другим статическим методам Observable, которые также создают наблюдаемые.

Разница может возникать в дочерних классах. Например, Subject.create равно AnonymousSubject.create и не равно new Subject. Обычно Subject.create - это тот, который обеспечивает желательное поведение, а new Subject - более низкоуровневое. Это подтверждает точку зрения на соглашение.

С другой стороны, некоторые классы (особенно BehaviorSubject) должны использоваться с new, потому что create подпись не позволяет обеспечить им желаемое поведение.