#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, если в этом нет явной необходимости. Наблюдаемые в целом также обеспечивают больший контроль над потоком данных.