我目前有一个可观察到的(称为videoStreams.currentTime $),它发出视频播放器的当前位置的时间少于每秒。如何获得当前时间(可观察到的值),但是每5秒左右一次?
这是我得到的最接近的值,但是每次发出值时,发出结果的次数都会增加。
const int = interval(5000);
const subscription = int
.pipe(flatMap(() => videoStreams.currentTime$))
.subscribe(val => console.log("TIME", val));
任何帮助将不胜感激
答案 0 :(得分:0)
改用switchMap
“ switchMap和其他展平运算符之间的主要区别是取消效果。在每次发射时,先前的内部可观察项(您提供的函数的结果)都会被取消,并且新的可观察项将被订阅。” read more on switchMap < / p>
import { Component } from '@angular/core';
import { interval,of } from 'rxjs';
import { flatMap,switchMap } from 'rxjs/operators';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
currentTime$ = of(1,2,3,4,5,6,7,8)
ngOnInit() {
const int = interval(5000);
const subscription = int
.pipe(switchMap(() => this.currentTime$ ))
.subscribe(val => console.log("TIME", val));
}
}
答案 1 :(得分:0)
使用以下命令证明很简单
const curTime$ = videoStreams.currentTime$.pipe(
throttle(() => interval(10000))
);
它不是通过每隔三分之一秒的时间返回玩家的位置,而是通过节流返回该时间点的值(我分配给它)。