Разница между EventEmitter.next () и EventEmitter.emit () в Angular 2


98

В чем разница между EventEmitter.emit()и EventEmitter.next()? Оба отправляют событие подписанным слушателям.

export class MyService {
  @Output() someEvent$: EventEmitter<any> = new EventEmitter();

  someFunc() {
   this.someEvent$.emit({myObj: true});

   this.someEvent$.next({myObj: true});
  }
}

Documenation для EventEmitter не так полезно в данный момент.

Ответы:



2

В последней версии (Ng9) исходный код выглядит event_emitter.tsследующим образом:

export class EventEmitter<T extends any> extends Subject<T> {
  /**
   * Emits an event containing a given value.
   * @param value The value to emit.
   */
  emit(value?: T) { super.next(value); }
}

EventEmitterрасширяется от родительского класса Subject. И emitвызов метода, super.next()как вы могли ожидать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.