Rxjs 为什么bufferTime(500010000)显示我在5000ms后创建的值
代码: 我不明白两件事:Rxjs 为什么bufferTime(500010000)显示我在5000ms后创建的值,rxjs,Rxjs,代码: 我不明白两件事: 为什么第一个值在5s后返回而不是10s后返回 10秒后(当我在控制台中看到空数组时),我开始单击btn。我这样做了4秒,10秒后仍然有空数组。但如果在控制台中出现空数组后5秒后开始单击,则会得到正确的结果 我认为它的工作原理类似于“每10秒,在接下来的5秒中发出click事件”。但事实并非如此。bufferTime(bufferTimeSpan:number,bufferCreationInterval:number,…) //bufferTimeSpan:填充每个缓
bufferTime(bufferTimeSpan:number,bufferCreationInterval:number,…)
//bufferTimeSpan:填充每个缓冲区数组的时间量。
//bufferCreationInterval:启动新缓冲区的间隔。
bufferTimeSpan示例1:bufferTimer(500010000)
// 1. bufferCreationInterval=10000
//每10秒打开一次缓冲区,从打开的缓冲区开始
┌ 5.┌ 10┌ 15┌ 20┌ 25┌ 30┌ 35┌ 40┌ 45┌ 50
缓冲时间间隔:[----[----[----[----[----[----[----[---------[---
//2.缓冲时间跨度=5000
//在缓冲区打开5秒后关闭缓冲区
┌ 5.┌ 10┌ 15┌ 20┌ 25┌ 30┌ 35┌ 40┌ 45┌ 50
缓冲区间隔:[~~~~~]----[~~~~~]----[~~~~~~~]----[~~~~~~~~]----[~~~~~~~]-----[~~~
只要我在控制台中看到空数组,我就开始单击按钮,我会这样做
持续4秒钟
┌┬┬┬ 听起来像是你点击了这里,没有任何记录
││││
缓冲区间隔:[~~~~~]----[~~~~~]----[~~~~~~~]----[~~~~~~~~]----[~~~~~~~]-----[~~~
如果我在出现空菜单后5秒后开始单击
在控制台中,有一个正确的结果
┌┬┬┬ 听起来你点击这里,值被缓冲了
││││
缓冲区间隔:[~~~~~]----[~~~~~]----[~~~~~~~]----[~~~~~~~~]----[~~~~~~~]-----[~~~
bufferTimeSpan>bufferCreationInterval⟹ 重叠缓冲区间隔
示例2:bufferTimer(20001000)
//1.bufferCreationInterval=1000
//每1秒打开一次缓冲区,从打开的缓冲区开始
┌ 5.┌ 10┌ 15┌ 20
缓冲时间间隔:([-{-([-{-([-{-)([-{-([-{-([-{-([-{-)([-{--([-{-)))(-
//2.bufferTimeSpan=2000
//在缓冲区打开2秒后关闭缓冲区
┌ 5.┌ 10┌ 15┌ 20
缓冲区间隔:(~[~]{~](~}[~]{~](~}[~]{~])(~}[~]{~](~}[~])(~}[~]{~](~}[~]{~}
//分为多个层以获得更好的视图
第1层:(~~-(~-)(~-)(~-)(~-)(~-)(~-)(~-)-(~
第二层:-[~]-[~]-[~]-[~]-[~]-[~]-[~]-[~]-[~]-[~]]-
第三层:-{~~}-{~~}-{~~}-{~~}-{~~}-{~~~}-{~~~}
该操作说明了什么?Igor,我读了它,但不明白。抱歉,我还在学习。我觉得它的工作原理与文档中的不同。“如果给定bufferCreationInterval,则该操作符每bufferCreationInterval毫秒打开一次缓冲区,每bufferTimeSpan毫秒关闭(发射和重置)一次缓冲区。”但该值在10秒后可见,而不是在5秒后可见(bufferTimeSpan)。
const source = Rx.Observable.fromEvent(document.getElementById('click'), 'click')
const example = source.bufferTime(5000,10000);
const subscribe = example.subscribe(val => console.log('Start Buffer Every 1s:', val));