Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 3414|Відповідь: 2

[Інше] RxJS про різницю між firstValueFrom і lastValueFrom

[Копіювати посилання]
Опубліковано 06.08.2024 11:19:02 | | | |
Вимоги: Проєкт має конвертувати Observables у Promises і чекати завершення, а при використанні методу toPromise() у проєкті Angular підказка вже застаріла, після чого рекомендується використовувати статичні методи firstValueFrom або lastValueFrom.



Чому скасувати метод toPromise()?

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

Просто зрозумійСпостережувані величини створюють кілька значеньА потімОбіцянки дають лише одну цінністьПотім деякі користувачі хочуть використати перше значення, а деякі — останнє, тому з'являються firstValueFrom і lastValueFrom. (Примітка: toPromise() — це останнє значення для отримання спостережуваних чисел

firstValueЗ прикладу

Можливо, варто отримати перше значення, коли воно прийде, не чекаючи завершення Observable, щоб використовувати firstValueFrom. firstValueFrom розв'язує обіцянку з першим значенням, випущеним Observable, і одразу відписується для збереження ресурсу. Якщо Спостережувана завершується без випромінювання жодного значення, першеЗначенняЗ також буде відхилено з Порожньою помилкою.



lastValueЗ прикладу

lastValueFrom майже ідентичний toPromise(), тобто він буде аналізувати останнє значення, досягнуте після завершення Спостережувана, але поводиться інакше, коли Спостережувана завершується без жодного значення. Коли Спостережуваний завершується без активації, 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
 Орендодавець| Опубліковано 06.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