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.
Ps.: Essa mesma dúvida já foi postada no Fórum e não obteve resposta, copiei e colei para fazer esse post, vamos ver se por algum milagre alguém responde...
Segue o código:
function recoverZipCode(input) {
const cep = input.value.replace(/\D/g, '')
const url = `https://viacep.com.br/ws/${cep}/json/`
const options = {
// Método da requisição que faremos
method:'GET',
/* Modo da requisição
OBS.: Como estamos fazendo requisição entre APIs, é importante deixar o mode com cors*/
mode: 'cors',
// O que esperamos de resposta da API
// Com o charset=utf-8 garantimos que o retorno da API estará no padrão utf-8
headers: {
'content-type':'application/json;charset=utf-8',
}
}
//Garantindo que o input seja válido antes de fazer a requisição
if(!input.validity.patternMismatch && !input.validity.valueMissing) {
fetch(url, options).then(
//Transformando o retorno em Json
response => response.json()
).then(
date => {
// Tratando o erro
console.log(date);
if(date.erro) {
input.setCustomValidity('Não foi possível buscar o CEP. Verifique os números digitados.')
// O return interrompe o fetch, após a mensagem de erro.
return
}
input.setCustomValidity('')
}
)
}
}