Q: ¿Cómo puedo retornar un valor en una función cuyo valor es la respuesta de una promesa? Tengo el siguiente código donde utilizo una promesa y luego obtengo el resultado con then(), pero
lo que deseo es tener el valor de datos en una variable fuera del then. Para luego poder pasarle esa variable con los datos a una función como prarámetro.
const datos = [{
    id:1,
    nombre:'Ursula',
    profesion:'Desarrollo Web'
},
{
    id:2,
    nombre:'Clarita',
    profesion:'Diseñador'
}];

const getDatos = () => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(datos)},
            1500)
    })
}

let value = getDatos();
value.then(val => console.log(val))


A: Intenta implementar tu función de la siguiente manera:

function probarPromesa() {
    // Sincrona
  
    var miPromesa = new Promise(
      function(resolve, reject) {
        // Asincrona
        
        if (true) {
          resolve(data);
        } else {
          reject(data);
        }
      });
  
    my_promise.then(
      function(data) {
        // Promesa resuleta
        // Asincrona
    }).catch(
        function(data) { 
        // Promesa rechazada
        // Asincrona
    });
      
    // Sincrona
  }


A: Puedes hacer lo siguiente:


async function foo() { // foo es async por lo tanto puedes hacer uso de await
  const datos = [{
      id:1,
      nombre:'Ursula',
      profesion:'Desarrollo Web'
  },
  {
      id:2,
      nombre:'Clarita',
      profesion:'Diseñador'
  }];   
  const getDatos = () => {
      return new Promise((resolve, reject) => {
          setTimeout(() => {resolve(datos)},1500)
      })
  }

  let value = await getDatos(); // usamos await para esperar la resolución de la promesa y obtener su resultado.
  console.log(value); // aquí ya podemos usar la variable con el resultado de la promesa.

}

foo();


De esta manera ahora puedes esperar a que se resuelva la promesa y obtener su resultado de una forma síncrona con await.
Importante: Await sólo puede ser usado dentro de una función async


*

*Más información sobre async

*Más información sobre await
