我正在使用當我滾動窗口時被扼流的流。
限制(只要滾動),它會向控制檯發出值。但是,當流空閒(用戶是而不是滾動窗口) - 我想要一個計時器踢入。但是 - 如果用戶再次開始滾動 - 我不希望該計時器發出值。RXJS - 僅在閒置時啓動計時器?
目前我在做這個:
const observable = Rx.Observable.fromEvent(window, 'scroll');
const subscriber = observable
.throttleTime(300)
.map(() => 'throttle')
.merge(Rx.Observable.interval(1000).map(() => 'tick'))
.subscribe(
(x) => {
console.log('Next: event!', x);
},
(err) => {
console.log('Error: %s', err);
},
() => {
console.log('Completed');
});
的問題是,雖然滾動 - 我看到這兩個"throttle"
和"tick"
(我應該只看到「油門」),從另一個
想到這POV。一份工作總是要運行。如果我滾動 - 即節流滾動 - 應該調用作業。如果我不滾動 - 計時器應該啓動並開始工作。 (如果用戶再次開始滾動,則停止)。
問:
我能不滾動的空閒時間後啓動一個定時器?
這是如何使一個很好的問題上左右。 +1 –
Re [your other comment](http://stackoverflow.com/questions/41522222/making-a-typing-timer-in-rxjs-tracking-time-spent-typing/41526650?noredirect=1#comment74109988_41526650) :你可以使用'exhaustMap' +'debounceTime'中的技巧解決這個問題,以檢測沒有滾動。我在'switchMap'上做了什麼,因爲我們在突發事件期間什麼都不做,並且當流空閒時工作就發生了。相反,'switchMap'會在每次發生新的滾動事件時重新啓動作業(定時器)。 – Dorus