1

Me gustaría poder sacar el valor de dentro del fetch:

getFeaturedMedia = json => {
   var result = null;

   fetch(json)
      .then(response => response.json())
      .then(responseJson => {
         result = responseJson.source_url; // I want to get this value out of here, with a return
      console.log("Inside: " + result);
   })
   .catch(error => {
      console.log(error);
   });

   return result;
};
JackNavaRow
  • 6,836
  • 5
  • 22
  • 49

1 Answers1

3

La función fetch retorna una promesa, para poder efectuarlo asincronamente es nesario usar await y async Funcion asincronamente

const getFeaturedMedia = async (json) => {
  let result = null;

  try {
    result = await fetch(json);
  } catch(error) {
    console.log(error);
  }

  if(result.ok) {
     return result.json();
  }

  // muestra el error retornado por la petición
  console.log(result.statusText);
};

La función al ser async retorna una promesa de un objeto plano, siendo necesario efectuar un await a la llamada de la función:

const media = await getFeaturedMedia('http://...');

Ó un then() y tratar la respuesta dentro del then:

let media;
getFeaturedMedia('...').then((response) => { media = response; });
JackNavaRow
  • 6,836
  • 5
  • 22
  • 49
osiris85
  • 787
  • 3
  • 12