【问题标题】:Returning a string value from a Typescript promise从 Typescript 承诺返回字符串值
【发布时间】:2017-04-19 22:40:59
【问题描述】:

好的,这里应该是一些简单的 Typescript 代码。反正在我心里……

public showDialog(theNickname: string): string {          
        var req = {
            method: 'POST',
            url: '/Q/GetUserDetails',
            data: { nickname: theNickname }
        }
        this.$http(req).then((response) => {

            var c = "Nickname: " + response.data.Nickname + "<br/>";
            c = c + "Score: " + response.data.Score + "<br/>";
            c = c + "Followers: " + response.data.Followers + "<br/>";              
            return c;               

        });

    }   

当然,它不会返回字符串值,因为它是作为承诺返回的。我不想使用超时功能。如何返回字符串值?它是从 html 上的 Angular 函数调用的。如果我改变了

public showDialog(theNickname: string): string { 

public showDialog(theNickname: string): any { 

还是不行。我在 UI.Bootstrap Popover 中使用此代码。

谢谢!

【问题讨论】:

    标签: typescript


    【解决方案1】:

    Paleo 的答案是正确的,但你可以更棒并使用 Async/Await:

    async function showDialog(theNickname: string): Promise<string> {          
            const req = {
                method: 'POST',
                url: '/Q/GetUserDetails',
                data: { nickname: theNickname }
            }
            const response = await this.$http(req);
            return `Nickname: ${response.data.Nickname
                }<br/>Score: ${response.data.Score
                }<br/>Followers: ${response.data.Followers}<br/>`;
    }   
    
    async function caller() {
        const message = await showDialog("TEST");
        alert(message);  
    }
    

    看看here

    【讨论】:

    • 您是否在前端应用程序的生产环境中使用async / await?编译后的代码(使用 Promise)看起来很复杂……
    • 这可能看起来很复杂@paleo,但它在数学上被证明是有效的。我在 prod 中使用它没有任何问题。
    猜你喜欢
    • 2019-02-16
    • 2017-12-21
    • 1970-01-01
    • 2020-04-19
    • 2016-03-18
    • 1970-01-01
    • 2019-01-23
    • 2015-10-30
    • 2016-10-11
    相关资源
    最近更新 更多