Rxjs Ngrx更改延迟()X分钟后的间隔

Rxjs Ngrx更改延迟()X分钟后的间隔,rxjs,ngrx,Rxjs,Ngrx,嗨,我是ngrx的新手。我试图实现的是有一种方法,可以重复执行一个操作,以获取可观察对象中项目的状态更新,直到可观察对象为空。第一次 在我想重复执行动作的那一分钟,假设每5秒执行一次,然后将其减慢到10秒。但在这个过程中,我似乎无法更新延迟的持续时间。 如果能就如何实现这一目标提出任何建议,我将不胜感激 this.myObservable$ .烟斗( 延迟(pollDelay), takeUntil(这个._销毁), 地图(项目=>{ console.warn(新日期()); 如果(初始轮询直到

嗨,我是ngrx的新手。我试图实现的是有一种方法,可以重复执行一个操作,以获取可观察对象中项目的状态更新,直到可观察对象为空。第一次 在我想重复执行动作的那一分钟,假设每5秒执行一次,然后将其减慢到10秒。但在这个过程中,我似乎无法更新延迟的持续时间。 如果能就如何实现这一目标提出任何建议,我将不胜感激

this.myObservable$
.烟斗(
延迟(pollDelay),
takeUntil(这个._销毁),
地图(项目=>{
console.warn(新日期());
如果(初始轮询直到<新日期()){
延迟时间=10000;
}                    
如果(items.length!==0){
这个._store.dispatch(getStatus({payload:{items:items}));
}否则{
这个._销毁.下一个(正确);
}                    
}),
重复()
)
.subscribe();

一种可能的解决方案是创建1分钟的
间隔,然后应用自定义排放延迟,例如:

const source$=间隔(1000*60)。管道(
以(2)为例,
//我们希望每分钟增加5秒的延迟
开关图(分钟=>间隔((分钟+1)*5*1000)),
轻触(分钟=>console.log(`Retrying${new Date()}`)
);
源$.subscribe();

完整示例见一种可能的解决方案是创建1分钟的
间隔,然后应用自定义排放延迟,例如:

const source$=间隔(1000*60)。管道(
以(2)为例,
//我们希望每分钟增加5秒的延迟
开关图(分钟=>间隔((分钟+1)*5*1000)),
轻触(分钟=>console.log(`Retrying${new Date()}`)
);
源$.subscribe();

完整的例子可以在

中找到。老实说,很难猜测你想做什么。 如果能看到更多关于它的信息就好了

在下面,您可以找到每5秒执行一次检查的代码的更新版本,一旦
initialPollingUntil
过期,它将每10秒执行一次检查

只需用这个代码替换您的代码

const tick=new BehaviorSubject(初始化pollinguntil);
滴管(
switchMap(日期=>this.myObservable$.pipe(
第一个(),
延迟(日期<新日期()?10000:500),
)),
点击(项目=>{
如果(items.length!==0){
这个._store.dispatch(getStatus({payload:{items}));
}否则{
这个._销毁.下一个(正确);
}
}),
轻触(()=>tick.next(tick.value)),

//takeUntil(这个._销毁),//老实说,很难猜到你想做什么。 如果能看到更多关于它的信息就好了

在下面,您可以找到每5秒执行一次检查的代码的更新版本,一旦
initialPollingUntil
过期,它将每10秒执行一次检查

只需用这个代码替换您的代码

const tick=new BehaviorSubject(初始化pollinguntil);
滴管(
switchMap(日期=>this.myObservable$.pipe(
第一个(),
延迟(日期<新日期()?10000:500),
)),
点击(项目=>{
如果(items.length!==0){
这个._store.dispatch(getStatus({payload:{items}));
}否则{
这个._销毁.下一个(正确);
}
}),
轻触(()=>tick.next(tick.value)),

//takeUntil(这个._销毁),//不确定我是否理解您在这里试图实现的目标。什么是
myObservable$
?发出一次还是保持打开状态?您是否尝试每隔5秒进行一次轮询,获取一个可观察的值并基于此分派一个操作?在这种情况下重复什么?不确定我是否理解您在这里试图实现的目标。
myObservable$
?发出一次或保持打开状态?您是否尝试每隔5秒进行一次轮询,获取一个可观察的值并根据该值发送一个操作?在这种情况下重复什么?