Как отписаться, если не использовать ngOnDestroy Angular 4

Сценарий:

Я разработал сервис, который проверяет подписи (OtpSMS и Position). Эта служба выполняет две основные функции:

--> validateSignPosition() : Наблюдаемый --> validateSignOtpSMS() : Наблюдаемый

Две упомянутые функции являются асинхронными, потому что им необходимо запросить вызов к удаленному серверу. Причина в том, что я использовал наблюдаемые данные, чтобы поддерживать правильный поток приложения.

Проблема

У меня есть ограничение на то, что я не могу использовать ngOnDestroy для отмены подписки на эти наблюдаемые. Затем я подумал о реализации действия по отмене подписки, когда я получаю данные или исключение ошибки. Как этот пример:

currentObserver = this.service.validateSignOTP().subscribe(
   data => { this.currentObserver.unsubscribe() },
   error => { this.currentObserver.unsubscribe() }
...

Я считаю, что есть еще один вариант не копировать код. Я слышал о разделе finally/onComplete, который выполняется, хотя получает данные или исключение. Но я не знаю, работает ли это с асинхронным излиянием...

Знаете ли вы, как можно отменить подписку на наблюдаемые для этого сценария?

Спасибо.


person JoseJimRin    schedule 19.02.2018    source источник