尝试执行导入的Async函数,但该函数的行为不是异步的



我正在使用React建立一个网站。我导入了一个异步函数,当我按下按钮时执行。然而,该函数不是异步工作,我真的不明白为什么。

interact.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'
};

Main.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);
}
};

控制台:

response from server:: undefined
getNFT code execute // This is executed correctly after 2 seconds

你必须返回承诺,这将解决你的webAPI(setTimeout)请像这样使用:

const getNFT = async () => {
return new Promise(resolve => setTimeout(() => {
console.log("getNFT code execute")
resolve(true)
}, 2000)
);
};

最新更新