Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 3279|Ответ: 2

[Другое] RxJS о разнице между firstValueFrom и lastValueFrom

[Скопировать ссылку]
Опубликовано 6.08.2024 11:19:02 | | | |
Требования: Проект должен преобразовать наблюдаемые данные в обещания и ждать завершения, а при использовании метода toPromise() в проекте Angular подсказка устарела, после чего рекомендуется использовать статические методы firstValueFrom или lastValueFrom.



Зачем устарять метод toPromise()?

Потому что имя метода toPromise() никогда не указывает, какое излучаемое значение Promise разрешит, поскольку наблюдаемые могут со временем создавать несколько значений. При конвертации в Обещание вы можете выбрать, выбрать ли первое значение или последнее значение. Чтобы решить все эти задачи, мы решили устарить до Promise() и ввести две новые вспомогательные функции для преобразования в обещания.

Просто поймитеНаблюдаемые величины дают несколько значенийИ потомОбещания приводят к только одной ценностиЗатем некоторые пользователи хотят использовать первое значение, а некоторые — последнее значение, поэтому появляются firstValueFrom и lastValueFrom. (Примечание: toPromise() — последнее значение для получения наблюдаемых величин

firstValueИз примера

Возможно, вам стоит получить первое значение, когда оно придёт, не дожидаясь завершения Observable, чтобы использовать firstValueFrom. firstValueFrom разрешит Promise с первым значением, изданным Observable, и сразу же отписывается для сохранения ресурса. Если наблюдаемое завершается без излучения какого-либо значения, первое значениеОт также будет отклонено с помощью EmptyError.



lastValueИз примера

lastValueFrom почти идентичен toPromise(), то есть он будет парсировать с последним значением, достигнутым при завершении наблюдаемой, но ведёт себя иначе, когда наблюдаемая завершается без излучения ни одного значения. Когда Observable завершается без срабатывания, toPromise() успешно разрешится в неопределенное значение (то есть тип возврата меняется), а lastValueFrom будет отклонён как EmptyError. Таким образом, тип возврата lastValueFrom — это Promise<T>, как и toPromise() в RxJS 6.





Пример парсинга

В RxJS интервал(1000) генерирует наблюдаемое число, которое излучает инкрементальную последовательность чисел каждые 1000 миллисекунд (то есть 1 секунду), начиная с 0.

Далее, .pipe(take(10)) — это операторная цепочка, ограничивающая количество элементов, излучаемых наблюдаемой величиной. Здесь take(10) означает, что берутся только значения первых 10 излучённых значений.

Давайте подробно объясним это выражение:

interval(1000): Создайте наблюдаемое число, которое излучает число каждые 1 секунду. Последовательность чисел начинается с 0 и увеличивается на 1 каждый раз.

.pipe(take(10)): Используйте метод .pipe() для соединения нескольких операторов. Здесь используем оператор take(10), который ограничивает наблюдаемую способность излучать только первые 10 значений.

Проверка на ошибки EmptyError

Код таков:


или




Ссылка:Вход по гиперссылке виден.




Предыдущий:Результаты командной строки запроса MySQL возвращают ? вопросительный знак
Следующий:Серия Angular 18 (двадцать два) представляет библиотеку иконок FontAwesome
 Хозяин| Опубликовано 6.08.2024 11:21:09 |
Если вы используете lastValueFrom или firstValueFrom в Angular HTTP, это эквивалентно, разницы нет, то есть вы можете использовать любой из них.
 Хозяин| Опубликовано 16.10.2024 21:44:52 |
Если вы возвращаете of(), вы можете получить исключение отсутствия элементов в последовательности, lastValueFrom теперь берет параметр конфигурации в качестве второго параметра, и вы можете задать значение по умолчанию, которое нужно излучать, когда наблюдаемая величина пуста:

Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com