日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NgRx 里 first 和 take(1) 操作符的区别

發(fā)布時間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NgRx 里 first 和 take(1) 操作符的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

take(1) vs first()

first() 運算符采用可選的 predicate 函數(shù),并在源完成后沒有匹配的值時發(fā)出錯誤通知。

下列代碼會報錯:

import { EMPTY, range } from 'rxjs'; import { first, take } from 'rxjs/operators';EMPTY.pipe(first()).subscribe(console.log, err =>console.log('Jerry Error:', err) );

同理,下面代碼也會報錯:

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) 只取第一個值并完成。不涉及進一步的邏輯。

import { EMPTY, range } from 'rxjs'; import { first, take } from 'rxjs/operators';EMPTY.pipe(take(1), ).subscribe(console.log, err => console.log('Error', err));

上面代碼不會有任何輸出:

使用 first 操作符需謹慎,當滿足下列條件使,可以使用 first:

(1)您將發(fā)出的零項視為錯誤條件(例如,在發(fā)出之前完成)并且如果出現(xiàn)錯誤的可能性大于 0%,則您可以優(yōu)雅地處理它
(2)或者你 100% 知道源 observable 會發(fā)出至少1個項目

更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:

總結

以上是生活随笔為你收集整理的NgRx 里 first 和 take(1) 操作符的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。