Estoy usando React para construir un sitio web. He importado una función asíncrona para ejecutar cuando presiono un botón. Sin embargo, la función no funciona de forma asíncrona y realmente no entiendo por qué.
interactuar.js:
export const getNFT = async () => { setTimeout(() => { console.log('getNFT code execute'); return nft; }, 2000); }; const nft = { tokenURI: 'https://gateway.pinata.cloud/ipfs/QmdxQFWzBJmtSvrJXp75UNUaoVMDH49g43WsL1YEyb', imageURL: 'https://gateway.pinata.cloud/ipfs/QmeMTHnqdfpUcRVJBRJ4GQ2XHU2ruVrdJqZhLz', ID: '212' };Principal.js
import { getNFT } from 'interact.js'; // This function is executed when a user clicks on a button let getAllocatedNFT = async () => { try { let response = await getNFT(); console.log('response from server:: '+response); }catch(e){ console.log(e); } };consola:
response from server:: undefined getNFT code execute // This is executed correctly after 2 secondsDebe devolver la promesa que resolverá su webAPI (setTimeout) Utilice como se muestra a continuación:
const getNFT = async () => { return new Promise(resolve => setTimeout(() => { console.log("getNFT code execute") resolve(true) }, 2000) ); };