У меня есть таймер, поэтому он должен делать паузу нажатием кнопки «подождать». Но нажатие кнопки имеет свое условие. Это должно быть 2 щелчка, а время между первым и вторым щелчком не должно быть> 500 мл. Поэтому мне нужно предпочтительно использовать операторы rxjs
const observable$ = interval(1000).pipe(mapTo(1));
const action$ = new Subject ();
const wait$ = action$.pipe(filter( action => action === false);
const timer$ = merge(wait$, start$)
.pipe(
startWith(true),
// if timer is paused return empty observable
switchMap(val => (val ? observable$ : EMPTY)),
scan((acc, curr) => (curr ? curr + acc : acc))
)
0
Александр Соколов
8 Сен 2021 в 21:46
Пример «двойного щелчка», который здесь, может вам подойти.
– Drew Reese
8 Сен 2021 в 21:54
К сожалению, этот пример неверен. Существует проблема, возникшая по этому поводу более двух лет назад :(
– NickL
1 Окт 2021 в 12:27
1 ответ
Лучший ответ
Вы можете попробовать что-то вроде этого:
buttonClicks.pipe(
bufferTime(500),
filter((clicks) => clicks.length > 1)
);
Он создает буферы событий в окнах 500 мс, а затем излучает, когда в буфере находится более одного события щелчка.
0
NickL
1 Окт 2021 в 12:40
Похожие вопросы
Новые вопросы
angularjs
Используйте для вопросов об AngularJS (1.x), JavaScript-фреймворке с открытым исходным кодом. НЕ используйте этот тег для Angular 2 или более поздних версий; вместо этого используйте тег [angular].