Q:

Отписка внутри подписки rx js

подскажите последсвия использования отписки от потока, внутри подписки на поток.
В проектах моей компании вижу такую структуру:
let sub = method().subscribe(() => {
   sub.unsubscribe();
   ...
})

Вижу что это плохо, но объяснить почему это плохо, не могу.
Помогите сформировать мысль.

A:

В этом нет ничего ужасного, но это не совсем по RxJS-овски.
Если observable эммитит больше одного результата, а вам нужен только один, то обычно делают так
method().pipe(take(1)).subscribe(() => {
   ...
})

Почему это лучше? Ну как минимум тем что не нужно создавать замыкание. Для других RxJS программистов такой код выглядет чище.
Вот статья по теме от одного из ключевых контрибьютеров RxJS https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87

A:

Если ты уверен, что подписчик вызывается асинхронно, то это будет работать.
Но если есть вероятность синхронного вызова, то переменная sub ещё не будет инициализирована и при попытке отписаться произойдёт исключение, которое уронит всю подписывающуюся функцию, а сама отписка так и не будет вызвана, причём никогда.

