1
resposta

A notificação do erro de CEP não encontrado demora para ocorrer

Olá. Está tudo dando certo aqui em termos de busca do cep pela API. Porém quando coloco um numero aleatório (no formato correto), ele demora para dar a resposta. Muito mais do que demora pra fazer a solicitação. O "erro: true" aparece instantaneamente no console, porém a resposta aparece apenas se eu saio do campo, volto ao campo, e saio dele novamente.

Segue o código:

function recuperaCEP (input){
    const cep = input.value.replace(/\D/g, '')
    const url = `https://viacep.com.br/ws/${cep}/json/` // essa interpolação da variável cep dentro do template literas vai puxar sempre o cpf certo.
    const options = {
        method: 'GET', // quer dizer que vou puxar informações da API
        mode: 'cors',
        headers: {
            'content-type': 'application/json;charset=utf-8'
        }
    }
    //antes de fazer o fetch em si, precisamos fazer a validação, para nao ficar fazendo requisições a toa
    //são colocadas essas negações porque essas condições são os erros, então se estiver "false", é pq está tudo certo e podemos pedir a requisição
    if(!input.validity.patternMismatch && !input.validity.valueMissing){
        fetch(url, options)
        .then(
            response => response.json()

        ).then(
            data => {
                //vou tratar o erro, se a pessoa colocar um cep no formato correto, porém a requisição não encontrou um match lá na API, e então nos retornou um "erro = true"
                console.log(data)
                if(data.erro){
                    input.setCustomValidity('CEP não encontrado, verifique o número.')
                    return // concluindo o Fetch
                }
                input.setCustomValidity('') // setCustomValidity com string vazio quer dizer que esta OK!
            }
        )
    }

Desde já, valeu!

1 resposta

Fala ai João, tudo bem? Você sabe me dizer se a requisição para a API está respondendo rápido ou não? Para isso tu pode abrir as ferramentas de desenvolvedor (F12) e depois ir na aba Rede, caso tu faça a requisição e esse tempo de resposta demore por conta dela, vai ter uma linha marcada como "Pendente".

Espero ter ajudado.