@Drovosek01

Как найти все Observable без отписки, например с помощью регулярных выражений?

Есть проект на Angular. В нем есть компоненты, в которых нет отписки, при подписке на Observable.

Есть ли какой-то инструмент, чтобы найти все куски кода, где есть подписка без отписки?

На рассматриваемом мной проекте отписка происходит с помощью
.pipe(takeUntil(this.unsubscribe$))
или
.pipe(takeUntil(this.componentDestroyed$))
Ну а сами эти поля прописываются в ngOnDestroy и т.д.

Я подумал, что можно попробовать написать регулярку, которая проверяла бы, есть ли перед ".subscribe" выше представленные куски кода.
Как я понял, для этого придется воспользоваться конструкцией "Negative lookbehind", которая поддерживается не всеми браузерами, но в VSCode в поиске по файлам она работает.

Я написал вот такую регулярку
(?<!componentDestroyed\$\)\)|unsubscribe\$\)\))[.\s]+\.subscribe

которая находит текст ".subscribe", которому сразу или спустя неопределенное количество символов не предшествует "componentDestroyed$))" или "unsubscribe$))".
Но почему-то это не работает на таком блоке кода. Текст ".subscribe" подсвечивается, хотя ему предшествуют выше описанные строки.
this.componentDestroyed$))
         .subscribe(
        (blob: Blob) => {

60887e5f8ae81320314341.png
Не могу понять почему подсвечивается ".subscribe", если ему предшествует "componentDestroyed$))" и как исправить регулярку, чтобы она правильно отрабатывала, подскажите, пожалуйста.
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
vanchelo
@vanchelo
Мы используем https://cartant.github.io/rxjs-tslint-rules/ и правило rxjs-prefer-angular-takeuntil
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы