userClick=new Subject() resetCountdown(){this.userClick.next()} setCountDown() { let counter = 5; let tick = 1000; this.countDown = timer(0, tick) .pipe( take(counter), map(() => --counter), takeUntil(this.userClick), finalize(() => { if (this.currentQuestionNumber < this.questionsToAsk) this.showNextQuestion(); else { this.endQuiz(); } }) ); }
什么时候? takeUntil(this.userClick) 发生,我不想 finalize 待执行。有没有可能做到这一点?我只想 定稿 在倒计时结束时执行 0 takeUntil
takeUntil(this.userClick)
finalize
定稿
0
takeUntil
你可以用 tap 检查值是否已达到目标并执行副作用。 像这样的
tap
function setCountDown() { let counter = 5; let tick = 1000; this.countDown = timer(0, tick) .pipe( take(counter + 1), map(value => counter - value), tap(value => { if (value === 0) { console.log('OUT OF TIME'); } }), takeUntil(userClick) ) }
看到这个了吗 example