В Angular 22 появится новый API debounced() и это именно то, чего давно не хватало.
Проблема, которую он решает
Классический кейс, строка поиска с результатами. При каждом нажатии клавиши сигнал обновляется, и если сразу триггерить HTTP-запрос, получаем флуд на сервер.
Старое решение
Раньше приходилось тащить RxJS, конвертировать сигнал в Observable через toObservable(), применять debounceTime(), затем конвертировать обратно через toSignal(). Работает, но выглядит как костыль.
Новое решение
debouncedQuery = debounced(() => this.query(), 500);
Все. Один вызов и никакого RxJS.
Promise-режим
Вместо миллисекунд можно передать функцию, возвращающую Promise. Например, подождать окончания скролла, CSS-анимации или подтверждения пользователя.
debouncedQuery = debounced(() => this.query(), untilScrollEnd);
👉 https://medium.com/p/74d76eb48384
