網站搜尋

從 Typescript promise 返回字串值


好吧,這裡應該有一些簡單的 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;               

        });

    }   

當然,它沒有返回字串值,因為它是以 Promise 的形式返回的。我不想使用 timeout 函數。如何才能返回字串值?它是從 HTML 上的 Angular 函數調用的。如果我改變

public showDialog(theNickname: string): string { 

到

public showDialog(theNickname: string): any { 

它仍然無法運作。我正在 UI.Bootstrap 的 Popover 中使用這段程式碼。

謝謝!

答案#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);  
}

在這裡查看