遵循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毫秒。
最佳答案
去抖时间
签名: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(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);
});
关于javascript - Rx DebounceTime不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51359607/