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:填充每个缓

代码:

我不明白两件事:

  • 为什么第一个值在5s后返回而不是10s后返回
  • 10秒后(当我在控制台中看到空数组时),我开始单击btn。我这样做了4秒,10秒后仍然有空数组。但如果在控制台中出现空数组后5秒后开始单击,则会得到正确的结果 我认为它的工作原理类似于“每10秒,在接下来的5秒中发出click事件”。但事实并非如此。

    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));