Created
October 6, 2021 06:32
-
-
Save longdog/562552b3e3993da562f20303cb50e259 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { debounce } from "patronum"; | |
import { | |
Effect, | |
Event, | |
guard, | |
} from "effector"; | |
/** | |
* отложенный запрос для поиска: ждет 1 сек после последнего события | |
* и если символов > 2 или 0 передает запрос | |
* @param searchEvent событие, которое надо дебаунсить | |
* @param searchUnit эфеект с запросом на сервер | |
*/ | |
export const searchDebouncer = ( | |
searchEvent: Event<string>, | |
searchUnit: Effect<string, any, Error> | Event<string> | |
) => { | |
// начинаем поиск только через секунду, как пользователь прекратил ввод | |
const searchTarget = debounce({ source: searchEvent, timeout: 1000 }); | |
// делаем запрос, если строка поиска > 2 символов или пустой | |
guard({ | |
clock: searchTarget, | |
filter: (search: string) => search.length > 2 || search.length === 0, | |
target: searchUnit, | |
}); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment