RxJava操作符实践:6_辅助操作之3_timestamp

一、描述

给Observable发射的数据项附加一个时间戳。

RxJava中的实现为timestamp,它将一个发射T类型数据的Observable转换为一个发射类型为Timestamped的数据的Observable,每一项都包含数据的原始发射时间。

timestamp默认在immediate调度器上执行,但是可以通过参数指定其它的调度器。

二、示意图

timestamp

三、示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Observable.just(1, 2, 3)
.timestamp()
.subscribe(new Subscriber<Timestamped<Integer>>() {
@Override
public void onCompleted() {
System.out.println("onCompleted.");
}

@Override
public void onError(Throwable e) {
System.out.println("onError: " + e.getMessage());
}

@Override
public void onNext(Timestamped<Integer> time) {
String timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new Date(time.getTimestampMillis()));
System.out.println("onNext: " + time.getValue() + "(" + timestamp + ")");
}
});

四、运行结果

1
2
3
4
onNext: 1(2016-10-17 22:05:04)
onNext: 2(2016-10-17 22:05:04)
onNext: 3(2016-10-17 22:05:04)
onCompleted.

五、更多

timestamp操作符还有以下变体:

  • timestamp(Scheduler)

详情可查阅下面的参考资料。

项目代码已上传到Github:https://github.com/SherlockShi/RxJavaBestPractise

六、参考资料

ReactiveX官方文档

ReactiveX文档中文翻译

PS:欢迎关注 SherlockShi 个人博客

感谢你的支持,让我继续努力分享有用的技术和知识点!