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

Сценарий:

Разработих услуга, която валидира подписи (OtpSMS и позиция). Тази услуга има две основни функции:

--> 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 източник
comment
Погледнете тук stackoverflow.com /questions/28007777/   -  person David    schedule 19.02.2018
comment
Можете също да използвате takeUntil и условие. Погледнете тук medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87   -  person nicowernli    schedule 19.02.2018
comment
Е, ако използвам first() и отписването работи. Но съм принуден да използвам и двата, защото ако използвам само един от тях, не работи. Необходимо ли е да се използват и двете? Или, теоретично, трябва да използвам само first() за този сценарий. Благодаря! @Дейвид   -  person JoseJimRin    schedule 21.02.2018