目录

过滤操作 - Take

优质
小牛编辑
133浏览
2023-12-01

Take

只发射前面的N项数据

take

使用Take操作符让你可以修改Observable的行为,只返回前面的N项数据,然后发射完成通知,忽略剩余的数据。

take

RxJava将这个操作符实现为take函数。

如果你对一个Observable使用take(n)(或它的同义词limit(n))操作符,而那个Observable发射的数据少于N项,那么take操作生成的Observable不会抛异常或发射onError通知,在完成前它只会发射相同的少量数据。

示例代码

  1. Observable.just(1, 2, 3, 4, 5, 6, 7, 8)
  2. .take(4)
  3. .subscribe(new Subscriber<Integer>() {
  4. @Override
  5. public void onNext(Integer item) {
  6. System.out.println("Next: " + item);
  7. }
  8. @Override
  9. public void onError(Throwable error) {
  10. System.err.println("Error: " + error.getMessage());
  11. }
  12. @Override
  13. public void onCompleted() {
  14. System.out.println("Sequence complete.");
  15. }
  16. });

输出

  1. Next: 1
  2. Next: 2
  3. Next: 3
  4. Next: 4
  5. Sequence complete.

take(int)默认不任何特定的调度器上执行。

take

take的这个变体接受一个时长而不是数量参数。它会丢发射Observable开始的那段时间发射的数据,时长和时间单位通过参数指定。

take的这个变体默认在computation调度器上执行,但是你可以使用第三个参数指定其它的调度器。