1
resposta

não consigo atribuir o valor que sai da .then() a uma variável alguem pode ajudar?

não consigo retornar o valor da promisse pra uma variável, ele pega o ip e exibe certinho no console.log mas não consigo atribuir ele a uma variável pra poder utilizar fora da função

vai o código: obs: malz pela identação :´)

export async function ipget(params) {
    //resgata o ip do usuário para check
    let ipaddress
    let ip
                                 fetch("https://extreme-ip-lookup.com/json", {method: "get"})

                                  .then( (httpResponse) => {
                                    if (httpResponse.ok) {
                                      return httpResponse.json();
                                    }
                                     else {
                                          return Promise.reject("Fetch sem sucesso");
                                        }
                                     })
                                          .then((json)=>{
                                              ipaddress = json.query
                                              console.log("o ip é:",ipaddress)
                                              console.log("o tipo é", typeof ipaddress) //checar o tipo pra garantir que é string
                                              ip = "" + ipaddress
                                              console.log("o ip é",ip)
                                              return(ip)
                                          })


}
1 resposta

Olá Gilherme tudo bem ?

Quando você da o then em uma promisse significa que ela ja resolveu, nao precisa dar o reject dentro dela uma forma de voce pegar o erro é dando o catch, para pegar o resultado resolvido é aguardar a sua promise resolver usando o await da seguinte forma:

export async function ipget(params) {

let response = await fetch("https://extreme-ip-lookup.com/json", { method: "get" }).then((response) => {
                    return response.json();
                }).catch((err) => {
                    console.log("Fetch sem sucesso");
                });

  console.log("response => ", response.query);
  // response => 192.168.0.1
} 

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software