с тех пор как несколько недель я довольно часто использую 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;});
Может быть, вопрос для новичков, но я хотел бы получить некоторое представление.
Спасибо!
да (это был псевдокод), понятно, но вопрос в основном в том, зачем использовать Observer.next (), хотя кажется, что наблюдаемый излучает значение, поэтому: obserable.next () более логично
Я думаю, что ваш вопрос вполне законный, вопрос, который я задавал себе, и до сих пор иногда всплывает у меня в голове. На мой взгляд, вы используете next на Observer, чтобы сказать: «Привет, Observer, вот следующий элемент, который я, Observable, хочу вам сообщить». Может, было понятнее, когда он назывался "onNext"? Еще кое-что. Вы также найдете next в теме. В этом случае next фактически означает «уведомить о новом возникновении события своими данными всем наблюдателям, которые подписались на эту тему». То же самое относится к error и complete.
Спасибо за ваш ответ! Idd: наблюдатель кажется представлением всех подписанных наблюдателей (напоминает мне отчасти делегата в C#) и Observer.next (значение), чем означает: вызвать определенную функцию next (значение) для каждого из этих наблюдателей и передать значение к этим функциям.





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