[NodeJs] Obsługa eventów a kontekst funkcji

Odpowiedz Nowy wątek
2018-10-24 21:02

Rejestracja: 2 lata temu

Ostatnio: 3 dni temu

0

Chcąc obsłużyć event (prawdopodobnie z EventEmitter [zewnętrzna biblioteka, nie jestem pewien na 100%]) i przypisując go do zdefiniowanej funkcji tracę kontekst 'this'. Zgaduję, że funkcja jest wywoływana poprzez function.apply.

Przykład:

class sampleClass {
    constructor() {
       sampleEventEmitter.on('sample-event', this._handleSampleEvent)

    }

    _handleSampleEvent() {
      //w tym miejscu this nie jest obiektem klasy
    }
}

Pytania:

  1. W jaki sposób "zgrabnie" odwołać się z poziomu zdefiniowanej funkcji obsługującej event do obiektu klasy?
  2. Czemu użycie funkcji anonimowej zachowuje kontekst (this wskazuje na obiekt klasy)?

Z góry dzięki :)

Pozostało 580 znaków

2018-10-24 21:03
Moderator

Rejestracja: 13 lat temu

Ostatnio: 5 godzin temu

Lokalizacja: Wrocław

sampleEventEmtter.on('sample-event', () => {
  console.log(this);
});

Dzięki wykorzystaniu funkcji strzałeczkowej (arrow function) zostaje zachowany kontekst wewnątrz niej.

Ew.:

sampleEventEmitter.on('sample-event', this._handleSampleEvent.bind(this));

Efekt ten sam, więc wybierz to, co wygląda Twoim zdaniem ładniej.


edytowany 3x, ostatnio: Patryk27, 2018-10-24 21:04

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0