Ошибка при импорте операторов RxJS в Angular

#angular #rxjs

#angular #rxjs

Вопрос:

Я получаю эту ошибку. Я пытаюсь использовать

 import { catchError } from 'rxjs/operators' 
  

вместо

 import 'rxjs/add/operator/catch'
  

Но что использовать вместо rxjs/add/operator/do and rxjs/add/operator/toPromise ?

Ответ №1:

Инструкции импорта зависят от версии RxJS.

RxJS 5

 import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/do';
import 'rxjs/add/operator/toPromise';
  

RxJS 6

 import { catchError, tap } from 'rxjs/operator';
  

Операторы catch and do были заменены на catchError and tap соответственно. Ничего не нужно импортировать toPromise , поскольку оно не является конвейерным и вызывается непосредственно на наблюдаемом.

Кроме того, если вы используете toPromise , вам нужно знать, что он устарел в RxJS 7 и исчезнет в RxJS 8.

Комментарии:

1. Итак, мне не нужно использовать toPromise в моем приложении?

2. @user13911625: как показано в статье, вы можете продолжить преобразование наблюдаемых в обещания, используя lastValueFrom firstValueFrom вместо этого или. Однако я бы посоветовал вам воздержаться от преобразования наблюдаемых в promises, если в этом нет явной необходимости. Наблюдаемые в целом также обеспечивают больший контроль над потоком данных.