Olá Débora .
Tudo bem?
Um erro comum é aplicar o debounceTime em um observable, mas continuar fazendo a chamada da API em outro trecho do código.
O debounceTime sozinho não resolve o erro de 429 (Too Many Requests) se a aplicação continuar disparando múltiplas requisições.
A implementação recomendada é combinar debounceTime, distinctUntilChanged e switchMap, garantindo que apenas a última busca seja enviada para a API:
this.searchControl.valueChanges.pipe(
debounceTime(500),
distinctUntilChanged(),
switchMap(termo => this.livrosService.buscarLivros(termo))
).subscribe(resultado => {
this.livros = resultado.items;
});
Além disso, verifique se a busca não está sendo executada em mais de um lugar. Um erro comum é ter:
- busca automática no
valueChanges; - busca ao clicar na lupa;
- busca em eventos como
(input) ou (keyup).
Nesses casos, cada interação gera uma nova chamada para a API, e o limite de requisições pode ser atingido rapidamente.
O ideal é que toda a lógica de busca passe pelo observable configurado com debounceTime.
Caso o erro continue mesmo após implementar esse fluxo, vale conferir no painel Network do navegador quantas requisições estão sendo enviadas a cada busca. Se uma única pesquisa estiver gerando várias chamadas, provavelmente há múltiplos subscribe() ou eventos duplicados acionando o serviço.
Analisa o codigo,testa ai e avise alguma duvida.
Bons estudos.