Olá pessoal!
Esse exercicio me deixou com uma séria dúvida, reparem nesse trecho onde o professor chama o método post:
new HttpService()
.post('/negociacoes', negociacao)
.then(() => {
inputData.value = '';
inputQuantidade.value = 1;
inputValor.value = 0.0;
inputData.focus();
alert('Negociação enviada com sucesso');
})
.catch(erro => alert(`Não foi possível enviar a negociação: ${erro}`));
Agora vejam o próprio método post:
post(url, dado) {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadystatechange = () => {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
//////aqui está minha dúvida
resolve(JSON.parse(xhr.responseText));
} else {
reject(xhr.responseText);
}
}
};
xhr.send(JSON.stringify(dado)); // usando JSON.stringify para converter objeto em uma string no formato JSON.
});
}
Vejam que o professor faz uma requisição do tipo POST, então ele tenta atribuir ao resolve da Promise a resposta do servidor, que no caso é undefined, e além disso tenta converter pra JSON o undefined que veio do servidor, essa peripécia de tentar converter undefined em JSON por si só já tá gerando erro no console, mas mesmo se isso funcionar reparem que o then lá na chamada do método não espera nenhum JSON...
Ou eu estou enganado e confuso, ou tem algo estranho nesse exercicio/código, algum manjão aí pode jogar uma luz aqui?