Это не из-за of()
. В первом примере каждый раз, когда вы звоните onChange($event.target.value)
, вы создаете новую цепочку со своим собственным debounceTime
и собственным таймером. Поэтому он никогда ничего не отменяет, потому что каждое изменение ввода имеет свою собственную цепочку.
Однако, если вы используете Subject (как в вашем втором примере) и проталкиваете все события через this.searchTerm$.next(val)
, тогда у вас есть только одна цепочка, где каждое событие выдвигается вверх, а затем отклоняется, как вы ожидаете.