Rxjs наблюдаемый против `` семантики '' наблюдателя

с тех пор как несколько недель я довольно часто использую Observables, и мне очень приятно иметь это в наборе инструментов.

Однако я не могу понять семантику / терминологию, проиллюстрированную следующей конструкцией (просто теоретический пример):

const o = Observable.create((observer: Observer<boolean>) => {
 observer.next(true);
 observer.error(false);
});

Я понимаю, что вам нужно передать аргумент анонимной функции, чтобы это произошло, но почему это называется Observer типа Observer и почему вы вызываете next () и error () для этого наблюдателя? Интуитивно для меня это наблюдаемое, которое испускает значения и передает их наблюдателю. Вышеупомянутая конструкция, кажется, меняет ситуацию.

В принципе, не было бы логичнее иметь следующий код псевдо:

const o = Observable.create(() => {
 this.next(true);
 this.error(false);
});

или, что еще более ясно:

const o = Observable.create(next: () => {... return true;}, error: () => { return false;});

Может быть, вопрос для новичков, но я хотел бы получить некоторое представление.

Спасибо!

С функциями arrow контекст this всегда будет содержащим классом, поэтому он не будет работать

user184994 15.09.2018 17:25

да (это был псевдокод), понятно, но вопрос в основном в том, зачем использовать Observer.next (), хотя кажется, что наблюдаемый излучает значение, поэтому: obserable.next () более логично

t_T_t 15.09.2018 18:02

Я думаю, что ваш вопрос вполне законный, вопрос, который я задавал себе, и до сих пор иногда всплывает у меня в голове. На мой взгляд, вы используете next на Observer, чтобы сказать: «Привет, Observer, вот следующий элемент, который я, Observable, хочу вам сообщить». Может, было понятнее, когда он назывался "onNext"? Еще кое-что. Вы также найдете next в теме. В этом случае next фактически означает «уведомить о новом возникновении события своими данными всем наблюдателям, которые подписались на эту тему». То же самое относится к error и complete.

Picci 16.09.2018 09:07

Спасибо за ваш ответ! Idd: наблюдатель кажется представлением всех подписанных наблюдателей (напоминает мне отчасти делегата в C#) и Observer.next (значение), чем означает: вызвать определенную функцию next (значение) для каждого из этих наблюдателей и передать значение к этим функциям.

t_T_t 16.09.2018 10:37
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
4
614
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Шаблон Наблюдаемый-наблюдатель - это механизм Толкать, означает, что задачей Observable является уведомление Observer. Observable нужна ссылка на Observer, чтобы уведомлять его о новых эмиссиях. Наблюдаемые обратные вызовы, такие как onNext и onError, являются мостом между Observable-Observer, поэтому такие обратные вызовы существуют в Observer, и Observable будет их вызывать.

Тем не менее: если это механизм проталкивания, не логичнее ли написать: observable.next (); это будет равно observable.push (). Но ладно, я думаю, что здесь не хватает какой-то технической информации. Спасибо за Ваш ответ. Я искренне это ценю.

t_T_t 15.09.2018 19:00

механизм push означает, что источник данных (наблюдаемый) будет отправлять новые данные слушателю (наблюдателю)

Fartab 15.09.2018 19:04

поэтому я предполагаю, что это означает: вызвать метод next () для подписанных наблюдателей, где наблюдатель.next () сопоставлен с обратным вызовом next каждого из подписанных наблюдателей

t_T_t 15.09.2018 19:04

Другие вопросы по теме