欢迎访问 生活随笔!

生活随笔

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

编程问答

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

发布时间:2023/12/19 编程问答 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 NgRx 里 first 和 take(1) 操作符的区别 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

take(1) vs first()

first() 运算符采用可选的 predicate 函数,并在源完成后没有匹配的值时发出错误通知。

下列代码会报错:

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)您将发出的零项视为错误条件(例如,在发出之前完成)并且如果出现错误的可能性大于 0%,则您可以优雅地处理它
(2)或者你 100% 知道源 observable 会发出至少1个项目

更多Jerry的原创文章,尽在:“汪子熙”:

总结

以上是生活随笔为你收集整理的NgRx 里 first 和 take(1) 操作符的区别的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。