Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Como o JavaScript entende que as variáveis "resposta" e "r" armazenariam a resposta da requisição?

Notei que no código, não há uma mensagem direta para o JS guardar a resposta da requisição na variável "resposta" nem em "r" e por isso fiz um teste:

Resolvi colocar um nome aleatório nessas variáveis e código funcionou igual! Mas por que? Como o JS sabe que estamos tratando da resposta?

var consultaCEP = fetch('https://viacep.com.br/ws/01001000/json')
    .then(sdfsdf => sdfsdf.json())
    .then(aaaaaa => console.log(aaaaaa));

console.log(consultaCEP);
2 respostas
solução!

Matheus, boa noite!

necessário entender de Promise

ele funciona como um callback, sendo assim o then espera a declaração de uma função, que também poderia ser declarada fora dele, por exemplo:

dentro do then ele faz algo semelhante a isso:

    function then (callback) {
        callback(/* resposta do servidor */);
    }

portanto, quando falamos de parametros oque importa é a posição dele na função, e não a o nome da variavel que armazenará o resultado.


function toJson (httpResponse) { // utilizando o parametro passado internamente pelo then 
    return httpResponse.json();
}

function exibeResultado (json) { // utilizando o parametro passado internamente pelo then
    console.log(json)
}

function trataErro (httpError) { // utilizando o parametro passado internamente pelo catch
    /* -- Tratamento do erro -- */
}

var consultaCEP = fetch('https://viacep.com.br/ws/01001000/json')
    .then(toJson) // está função que foi passada, será utilizada como callback
    .then(exibeResultado) // essa também
    .catch(trataErro); // e essa também

veja que ele respeita um contrato (ele recebe no primeiro parametro o resultado da requisição).

Gabriel, boa noite!

Obrigado pela explicação! Com os exemplos que você colocou, ficou claro pra mim que o nome não importa pois estamos apenas nomeando a função que vai entrar como parâmetro.

O exemplo abaixo deu uma boa dica que a nomeação dessas funções pode ser bem literal, de maneira a deixar muito claro o que cada uma delas está fazendo. Show!

var consultaCEP = fetch('https://viacep.com.br/ws/01001000/json')
    .then(toJson) // está função que foi passada, será utilizada como callback
    .then(exibeResultado) // essa também
    .catch(trataErro); // e essa também