关于rxjs:NgRx-里-first-和-take1-操作符的区别

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的原创文章,尽在:”汪子熙”:

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元

阿里云限时活动-1核2G-1M带宽-40-100G ,特惠价87.12元/年(原价1234.2元/年,可以直接买3年),速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

You may also like...

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据