RxJS 5.0 中的时间戳
Timestamp in RxJS 5.0
在 RxJS 4.0 中我可以做如下事情:
let clicks = Observable.fromEvent(board.canvas, 'click'),
keydowns = Observable.fromEvent(document, 'keydown')
.filter((e) => e.keyCode === 32);
return Observable
.merge(clicks, keydowns)
.sample(200).
.timestamp();
Now that RxJS 5.0 dropped support for timestamp
,请问这段代码在迁移中是如何完成的?
我们可以通过映射一些源 Observable 来相当容易地重新创建此行为:
function timestamp(source) {
return source.map(value => ({ value, timestamp: Date.now() }));
}
在您的代码中:
let clicks = Observable.fromEvent(board.canvas, 'click');
let keydowns = Observable.fromEvent(document, 'keydown')
.filter((e) => e.keyCode === 32);
let clicksAndKeydowns = Observable
.merge(clicks, keydowns)
.sample(200);
return timestamp(clicksAndKeydowns);
对于未来的读者 -
.timestamp()
已在 RxJS 5.0 中重新实现(在 beta.4 (2016-03-29) 中)。
变更日志位于:https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md
在 RxJS 4.0 中我可以做如下事情:
let clicks = Observable.fromEvent(board.canvas, 'click'),
keydowns = Observable.fromEvent(document, 'keydown')
.filter((e) => e.keyCode === 32);
return Observable
.merge(clicks, keydowns)
.sample(200).
.timestamp();
Now that RxJS 5.0 dropped support for timestamp
,请问这段代码在迁移中是如何完成的?
我们可以通过映射一些源 Observable 来相当容易地重新创建此行为:
function timestamp(source) {
return source.map(value => ({ value, timestamp: Date.now() }));
}
在您的代码中:
let clicks = Observable.fromEvent(board.canvas, 'click');
let keydowns = Observable.fromEvent(document, 'keydown')
.filter((e) => e.keyCode === 32);
let clicksAndKeydowns = Observable
.merge(clicks, keydowns)
.sample(200);
return timestamp(clicksAndKeydowns);
对于未来的读者 -
.timestamp()
已在 RxJS 5.0 中重新实现(在 beta.4 (2016-03-29) 中)。
变更日志位于:https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md