在Javascript中将对象承诺转换为字符串

在Javascript中将对象承诺转换为字符串,javascript,reactjs,solidity,semantic-ui-react,next.js,Javascript,Reactjs,Solidity,Semantic Ui React,Next.js,我正在使用React、Next.Js、语义ui React和Solidity。我的目标是打印出用户地址(来自MetaMask)和项目标题(由用户设置),作为语义ui卡的元信息。在“header”中打印地址是可行的,但我无法将项目标题打印为“meta”。标题应该是字符串,但我收到了一个对象承诺 static async getInitialProps() { const projects = await factory.methods.getDeployedProjects().call(

我正在使用React、Next.Js、语义ui React和Solidity。我的目标是打印出用户地址(来自MetaMask)和项目标题(由用户设置),作为语义ui卡的元信息。在“header”中打印地址是可行的,但我无法将项目标题打印为“meta”。标题应该是字符串,但我收到了一个对象承诺

static async getInitialProps() {
    const projects = await factory.methods.getDeployedProjects().call();
    return {
        projects
    };
}

async getProjectTitle(address) {
    let title;
    try {
        title = await factory.methods.projectTitle(address).call();
    } catch (err) {
        console.log('err');
    }
    return title;
}

renderProjects() {
    const items = this.props.projects.map(address => {
        return {
            header: address,
            color: 'green',
            description: (
                <Link route={`/projects/${address}`}>
                    <a>View Project</a>
                </Link>
            ),
            **meta: this.getProjectTitle(address)**,
            fluid: true,
            style: { overflowWrap: 'break-word' }
        };
    }, );
    return <Card.Group items={items} />
}

基本框架来自Stephen Grider的Udemy课程“以太坊与实体:完整的开发人员指南”。

没有直接的方法将对象承诺转换为字符串。
继续处理的唯一方法是调用
wait
函数或使用
.then()
和回调函数。

您不能“转换”承诺;您必须等待函数调用,或者显式使用
.then()
和回调函数。好的,谢谢。这是我期待的答案。但这又给我带来了另一个可能非常简单的问题。我写了以下几行:var title=this.getProjectTitle(address).then(res=>{console.log('res',res);});'res'带来了我需要的类型(字符串)。但我不知道如何将变量转移到meta标记。也许我今天有点慢。
address[] public deployedProjects;
mapping(address => string) public projectTitle;

function createProject(string startup, string title, string deadline, string description, uint wage) public {
    address newProject = new Project(startup, title, deadline, description, wage, msg.sender);
    projectTitle[newProject] = title;
    deployedProjects.push(newProject);
}

function getDeployedProjects() public view returns (address[]) {
    return (
        deployedProjects
    );
}