Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用SwitchMap的Rxjs倒计时_Javascript_Timer_Rxjs - Fatal编程技术网

Javascript 使用SwitchMap的Rxjs倒计时

Javascript 使用SwitchMap的Rxjs倒计时,javascript,timer,rxjs,Javascript,Timer,Rxjs,RXJS倒计时计时器突然停止,我可以发现它被switchMap取消,当可信数据没有发出时 如何修复它?我需要点击按钮启动计时器。 请找到我的示例的jsbin const start=Rx.Observable.fromEvent(document.querySelector('btn'),'click'); 开始 .switchMap(()=>{ 返回接收可观察定时器(0,1000) .takeUntil(接收可观测计时器(60000+1000)) }) .map((值)=>60000-值*

RXJS倒计时计时器突然停止,我可以发现它被switchMap取消,当可信数据没有发出时

如何修复它?我需要点击按钮启动计时器。 请找到我的示例的jsbin


const start=Rx.Observable.fromEvent(document.querySelector('btn'),'click');
开始
.switchMap(()=>{
返回接收可观察定时器(0,1000)
.takeUntil(接收可观测计时器(60000+1000))
})
.map((值)=>60000-值*1000)
.map(功能(i){
返回“定时器(秒):+i/1000;
}).订阅(功能(文本){
var container=document.querySelector(“#app”);
container.textContent=文本;
});

RxJS 5运算符
开始

const start$=Rx.Observable.fromEvent(document.querySelector('btn'),'click');
开始$
.switchMap(()=>{
返回接收可观察定时器(0,1000)
.takeUntil(接收可观测计时器(3000+1000))
.map(值=>3000-值*1000)
.map(功能(i){
返回“定时器(秒):+i/1000;
});
})
.订阅(功能(文本){
var container=document.querySelector(“#app”);
container.textContent=文本;
});

RxJS 5运算符
开始


尝试将
takeUntil(…)
更改为
take(…)

发件人:

.takeUntil(Rx.Observable.timer(60000 + 1000))
.take(60000 / 1000 + 1)
至:

.takeUntil(Rx.Observable.timer(60000 + 1000))
.take(60000 / 1000 + 1)
猜测原因:

.takeUntil(Rx.Observable.timer(60000 + 1000))
.take(60000 / 1000 + 1)
如果计时器累积了时间错误,
takeUntil
可以在预期的计时器事件发生之前触发

      time
[0]   0.000
[1]   1.103
...
[59] 60.234
     61.003 <- takeUntil fired
[60] 61.123 <- expected last event lost
时间
[0]   0.000
[1]   1.103
...
[59] 60.234

61.003我将开始通过正确格式化代码来修复它。我已经在一个小应用程序中实现了一个倒计时来展示ngrx,名为。它可能会帮助你:)@artur grzesiak Done:)代码格式我看不出你的代码有什么不同,除了持续时间。多亏了@thatsseeyou。这似乎奏效了。你能解释一下原因吗?我接受你的建议answer@satz我在帖子中添加了原因。这可能是一个有效的原因,当数据不值得Trsutworth时,switchmap将执行rest。非常感谢:)