Как удалить eventlistener - PullRequest
       61

Как удалить eventlistener

0 голосов
/ 08 октября 2018

Я создаю приложение с помощью Ionic, и я использую EventSources, например:

ionViewWillEnter() {
    this.uniqueDeviceID.get()
        .then((uuid: any) => {
            this.eventListener = this.events(uuid).addEventListener("message", function(e) {
                console.log(e);
            }, false);
        })
        .catch((error: any) => {
                console.log(error);
        });
}

events(uuid: any) {
    return new EventSource("http://url.com");
}

Работает нормально, но я хочу остановить слушателя, когда снова покидаю представление - что-то вроде этого:

ionViewWillLeave() {
    this.eventListener.removeEventListener("message", function(e) {
        console.log(e);
    }, false);
}

Но это не работает.Как мне снова удалить слушателя?

1 Ответ

0 голосов
/ 08 октября 2018

Вы должны хранить созданный EventSource и обратные вызовы в переменных.Только в этом случае вы сможете ссылаться на них, что требуется для прослушивателей удаления, например:

ionViewWillEnter() {
    this.uniqueDeviceID.get()
        .then((uuid: any) => {
            var eventListener = function (e) { console.log(e) };
            var eventSource = this.events(uuid)
            eventSource.addEventListener("message", eventListener, false);
            // then you can
           eventSource.removeEventListener("message", eventListener, false);
        })
        .catch((error: any) => {
            console.log(error);
        });
}
...