rxjs:如何理解这种测试行为

rxjs:如何理解这种测试行为,rxjs,combinelatest,Rxjs,Combinelatest,在我的应用程序中,我遇到了一个与combinelateest操作符相关的奇怪行为。我在在线演示中复制了这个问题: 注意:请忽略这个演示中的业务逻辑,它没有那么合理,我只想在技术层面上重现这个问题 此方法使用CombineTest组合两个观察值:limit$和offset$。并向API发送请求,其中limit和offset的值只是API的参数 我用以下方法将计数器值每5秒增加1: let counter = 1 setInterval(() => { this.offsetContro

在我的应用程序中,我遇到了一个与
combinelateest
操作符相关的奇怪行为。我在在线演示中复制了这个问题:

注意:请忽略这个演示中的业务逻辑,它没有那么合理,我只想在技术层面上重现这个问题

此方法使用CombineTest组合两个观察值:limit$和offset$。并向API发送请求,其中limit和offset的值只是API的参数

我用以下方法将计数器值每5秒增加1:

let counter = 1
setInterval(() => {
  this.offsetControl.setValue(counter)
  counter++;
}, 5000)
最后,出于某种原因,我需要每隔6秒间隔调用testRequest方法,方法如下:

setInterval(() => {
  this.testRequest();
}, 6000) 
那么网络请求行为如下所示:

limit=5&offset=0
limit=5&offset=1  
limit=5&offset=0
limit=5&offset=2 
limit=5&offset=0
limit=5&offset=3  
...
limit=5&offset=0
limit=5&offset=n  

我不明白为什么
limit=5&offset=0
重复出现。谢谢。

每次执行testRequest时,您都在创建一个新的可观察对象,这不是您想要做的,每次重新创建可观察对象时,您都会得到StartWith值,当您调用StartWith时,该值为零

去掉最新的组合,只需从表单控件中提取值


每次执行testRequest时,您都在创建一个新的可观察对象,这不是您想要做的,每次重新创建可观察对象时,您都会得到StartWith值,当您调用StartWith时,该值为零

去掉最新的组合,只需从表单控件中提取值


如果是这样,每次创建一个新的可观察对象,以及为什么它只有一个值(5,0)。由于偏移量一直在更新,为什么新的可观察对象没有(5,1)(5,2)…(5,n)每次新订阅CombineTest时,您都会得到值为5和0的StartS,它会完全按照您的要求执行。如果是这样,每次创建新的可观察对象时,为什么它只有一个值(5,0)。由于偏移量不断更新,为什么新的可观测对象没有(5,1)(5,2)…(5,n)每次新订阅CombineTest时,您都会得到值为5和0的StartTest,它会完全按照您告诉它的做。
limit=5&offset=0
limit=5&offset=1  
limit=5&offset=0
limit=5&offset=2 
limit=5&offset=0
limit=5&offset=3  
...
limit=5&offset=0
limit=5&offset=n