soy nuevo en javascript y tengo problemas con los conceptos, ¿cómo accedo al valor de retorno de la función asíncrona fuera de ella? Probé un método .then pero solo devuelve indefinido... este es mi código, quiero asignar el resultado a la variable contractNumber fuera de la función asíncrona para que pueda pasarlo a otra función y también a la consola. Registre el resultado externamente ... vengo de aprender Python, así que estoy muy confundido
const inquirer = require('inquirer') async function getContract() { await inquirer.prompt({ type: 'input', name: 'retrieveContract', message: "Enter contract adress: ", }) .then(answer => { console.log(`Targetting: ${answer.retrieveContract}`); results = answer.retrieveContract return results }); } getContract() contractNumber = results const inquirer = require('inquirer') async function getContract() { const result = await inquirer.prompt({ type: 'input', name: 'retrieveContract', message: "Enter contract adress: " }) console.log(`Targetting: ${result.retrieveContract}`); return result.retrieveContract; } contractNumber = await getContract();Para comprender lo que sucede, await espera a que la promesa de inquirer.prompt se resuelva en un valor de retorno, con el que luego puede trabajar. No hay necesidad de una cláusula .then para trabajar con el valor devuelto.
Hay dos soluciones:
await y simplemente continúe escribiendo su lógica. (Mi solución preferida ya que es más limpia e intuitiva) async function getContract() { const answer = await inquirer.prompt({ type: 'input', name: 'retrieveContract', message: "Enter contract adress: ", }) console.log(`Targetting: ${answer.retrieveContract}`); results = answer.retrieveContract return results }.then y pase la función de devolución de llamada en .then async function getContract() { inquirer.prompt({ type: 'input', name: 'retrieveContract', message: "Enter contract adress: ", }).then(answer => { console.log(`Targetting: ${answer.retrieveContract}`); results = answer.retrieveContract return results }); }