Erc-721
在我的 ERC-721 合約中,tokenURI 不返回字元串,而是返回 Promise
在我的 Solidity 合約中,tokenURI 的函式如下所示:
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); if (revealed == false) { return string(notRevealedUri); } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked( currentBaseURI, tokenId.toString(), baseExtension ) ) : ""; }
請注意,我有一個 bool 來確定是否設置了“顯示的”tokenURI。我遇到的問題是 when
revealed
被設置為 false 但我已經呼叫setNotRevealedURI
函式來實際將 設置notRevealedUri
為一個值。我希望函式tokenURI
給我這個notRevealedUri
字元串,但它給了我一個 Promise:> token.tokenURI(1); Promise { <pending>, [Symbol(async_id_symbol)]: 501, [Symbol(trigger_async_id_symbol)]: 7, [Symbol(destroyed)]: { destroyed: false } } >
我一直在使用安全帽 btw 與契約進行互動。
那麼如何讓這個函式輸出一個字元串呢?
所有合約互動都是非同步的,您需要使用
await
orthen
。await token.tokenURI(1);