0

Tengo un fetch que manda a llamar una lambda de AWS, este devuelve un objeto que tiene ciertos parametros que utilizo, principalmente uno llamado Status que es un boleano. La cuestión es que sin importar que haga con el fetch, este no me devuelve el resultado que necesito, pero con el .then(data => console.log(data)) si me imprime el resultado

  async checkUser(){
    let url = <link>;
    let response = await fetch(url, {
      method: 'POST',
      body: JSON.stringify({
        User: this.Username
      }),
      headers: {
        'Content-Type': 'application/json',
      },
    })
    .then(data => data.json())
    .then(data => console.log(data));//Sii imprime el resultado necesitado
    console.log(response);//Imprime -Undefine-
    return response;
  }

No se que puedo estar haciendo mal, porque tengo otros fetch que los uso exactamente igual y si funcionan como debería, alguna idea?

Alfa Rojo
  • 388
  • 2
  • 11

1 Answers1

1

Estás mezclando conceptos. Si utilizas async y await ya no necesitas .then(), y como en tu caso quieres tener una función que devuelva una respuesta, debes decantarte por lo primero:

async checkUser() {
    let url = < link > ;
    let request = await fetch(url, {
        method: 'POST',
        body: JSON.stringify({
            User: this.Username
        }),
        headers: {
            'Content-Type': 'application/json',
        },
    });
    let response = await request.json();
    
    return response;
}

Como aclaración, si utilizas .then() tendrás que trabajar dentro de la respuesta:

fetch(url, { /*params*/ }).then(request => request.json()).then(response => { /* ... */});
kosmosan
  • 538
  • 2
  • 5
  • Porque ya no necesito el `.then()`?? Digo, pensaba que era literal, al obtener algo de internet, *luego* hacer tal cosa, y así – Alfa Rojo Sep 16 '21 at 14:38
  • Gracias!! Aunque sigo sin entender porque en los otros fetch que tengo, no me da problemas hacerlo como muestro aquí – Alfa Rojo Sep 16 '21 at 14:41
  • 1
    Te lo iba a explicar, pero ya lo hizo alguien mejor de lo que lo iba a hacer yo aquí: https://es.stackoverflow.com/a/277693/115064 – kosmosan Sep 16 '21 at 14:46