debounceTime Rxjs, когда те же параметры передаются в

#javascript #angular #typescript #rxjs

#javascript #угловой #машинописный текст #rxjs

Вопрос:

У меня есть несколько компонентов, использующих эту службу, и я хочу отключить время, когда я вводю одно и то же значение, но если это другое значение, пропустите его. В этом коде я хочу каким-то образом проверить, использовались ли типы ранее

 from(types).pipe(
  debounceTime(1000), 
   map(([data, type]) => {
  // mapping logic 
  }),
)
 

Это очень похоже на эту проблему https://github.com/lodash/lodash/issues/2403 и я пытаюсь понять это, но я надеюсь, что все еще буду использовать код RXJS

Спасибо

Комментарии:

1. Итак, если a испускается, то вы запускаете a debounceTime , и если a испускается снова, то debounceTime выполнит свою работу, но если b испускается, то ток debounceTime должен быть уничтожен, верно? Это означает, что если после предыдущего b придет a , его пропустят, не так ли?

Ответ №1:

Одним из возможных решений может быть использование оператора для вывода как предыдущих, так и текущих значений, а затем использование оператора для сравнения значений и соответствующего удаления pairwise debounce :

 from(types).pipe(
  pairwise(),
  debounce(([prev, cur]) => (prev === cur)
    ? timer(1000)
    : EMPTY
  ),
  map(([, cur]) => cur), // No further need for prev value
  map(([data, type]) => {
    // mapping logic 
  }),
)