Рассмотрим пример с RxJS.
Тип A: [используя фильтр]
this.userService.afAuth.authState
.pipe(filter(user => !!user))
.subscribe( _ => this.router.navigate(["/anything"]) )
Тип B: [используя if]
this.userService.afAuth.authState
.subscribe( user => {
if (!!user) this.router.navigate(["/anything"])
})
Q1. How do we compare the performance?
Q2. Which is recommended and why?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Q1. How do we compare the performance?
Вы можете использовать https://jsperf.com/ для создания теста производительности. Я могу сказать вам, что «Тип B» должен работать лучше, потому что задействовано меньше вызовов функций. Это будет заметно только в том случае, если вы часто вызываете функцию В самом деле (возможно, 10 000 вызовов в секунду в качестве грубой оценки). Для типичных случаев использования разницы не будет.
Q2. Which is recommended and why?
С точки зрения дизайна рекомендуется «Тип А». Он имеет более декларативный синтаксис и поэтому его легче заменить или использовать повторно. Например, ваша трубка filter может быть извлечена в многоразовую трубу и использоваться несколько раз. Если ваш предикат изменится в какой-то момент, вам нужно изменить его только один раз.
Спасибо за вашу точку зрения. Выглядит весьма многообещающе.