NgRx 里 first 和 take(1) 操作符的区别
生活随笔
收集整理的這篇文章主要介紹了
NgRx 里 first 和 take(1) 操作符的区别
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
take(1) vs first()
first() 運(yùn)算符采用可選的 predicate 函數(shù),并在源完成后沒(méi)有匹配的值時(shí)發(fā)出錯(cuò)誤通知。
下列代碼會(huì)報(bào)錯(cuò):
import { EMPTY, range } from 'rxjs'; import { first, take } from 'rxjs/operators';EMPTY.pipe(first()).subscribe(console.log, err =>console.log('Jerry Error:', err) );同理,下面代碼也會(huì)報(bào)錯(cuò):
range(1, 5).pipe(first(val => val > 6), ).subscribe(console.log, err => console.log('Error', err));下列代碼輸出1:
import { EMPTY, range } from 'rxjs'; import { first, take } from 'rxjs/operators';range(1, 5).pipe(first()).subscribe(console.log, err => console.log('Error', err));另一方面, take(1) 只取第一個(gè)值并完成。不涉及進(jìn)一步的邏輯。
import { EMPTY, range } from 'rxjs'; import { first, take } from 'rxjs/operators';EMPTY.pipe(take(1), ).subscribe(console.log, err => console.log('Error', err));上面代碼不會(huì)有任何輸出:
使用 first 操作符需謹(jǐn)慎,當(dāng)滿足下列條件使,可以使用 first:
(1)您將發(fā)出的零項(xiàng)視為錯(cuò)誤條件(例如,在發(fā)出之前完成)并且如果出現(xiàn)錯(cuò)誤的可能性大于 0%,則您可以優(yōu)雅地處理它
(2)或者你 100% 知道源 observable 會(huì)發(fā)出至少1個(gè)項(xiàng)目
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的NgRx 里 first 和 take(1) 操作符的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何获取 SAP Commerce Cl
- 下一篇: S12全球总决赛EDG战队阵容是什么