按照rxjs和其他指南页面的说明进行操作并不能解决debounceTime
不起作用的问题。
function getValue() {
return new rxjs.Observable(sub => {
let counter = 0;
setInterval(() => {
counter++;
sub.next(counter);
}, 100);
});
}
// Removing debounceTime works or set it to a value < 100.
getValue().pipe(rxjs.operators.debounceTime(1000)).subscribe(data => {
console.log(data);
});
https://jsfiddle.net/5bp1cwho/7/
我希望该值是每秒钟而不是100毫秒。
答案 0 :(得分:1)
去抖时间
签名:debounceTime(dueTime:数字,调度程序:Scheduler): 可观察的
丢弃发射时间间隔小于指定时间的值 输出
所有发射的物品间隔小于1000毫秒,因此将其丢弃。
注意:默认情况下,第一项不会直接发出。
如果只想获取最后一个操作auditTime
,则是您要搜索的运算符。
auditTime
忽略源值
duration
毫秒,然后发出 来自源Observable的最新值,然后重复此操作 过程。
function getValue() {
return rxjs.interval(100);
}
// keep the last element after 1000ms
getValue().pipe(rxjs.operators.auditTime(1000)).subscribe(data => {
console.log(data);
});
如果要对1000毫秒内收到的所有元素进行特定处理,则可以使用bufferTime。
bufferTime
签名:bufferTime(bufferTimeSpan:数字, bufferCreationInterval:数字,调度程序:Scheduler):可观察 收集发出的值,直到经过指定的时间为止,以数组形式发出。
function getValue() {
return rxjs.interval(100);
}
getValue().pipe(
rxjs.operators.bufferTime(1000),
rxjs.operators.map(itemsList => Math.max(itemsList))
)
.subscribe(data => {
console.log(data);
});